Partager via


Avertissement du compilateur (niveau 1) C4350

changement de comportement : 'membre1' appelé à la place de 'membre2'

Une rvalue ne peut pas être liée à une référence non const.Dans les versions antérieures de Visual C++, il était possible de lier une rvalue à une référence non const dans une initialisation directe.Ce code génère désormais un avertissement.

À des fins de compatibilité descendante, il est encore possible de lier des rvalues à des références non const, mais les conversions standard sont conseillées dans la mesure du possible.

Cet avertissement représente une modification du comportement par rapport au compilateur de Visual C++ .NET 2002.S'il est activé, cet avertissement peut être généré pour un code correct.Par exemple, il peut s'afficher lors de l'utilisation du modèle de classe std::auto_ptr.

Si vous rencontrez cet avertissement, examinez votre code pour déterminer s'il dépend de la liaison de rvalue à des références non const.Le problème peut être résolu en ajoutant une constante à la référence ou en fournissant une surcharge de référence const supplémentaire.

Cet avertissement est désactivé par défaut.Pour plus d'informations, consultez Avertissements du compilateur désactivés par défaut.

L'exemple suivant génère l'erreur C4350 :

// C4350.cpp
// compile with: /W1
#pragma warning (default : 4350)
class A {};

class B
{
public:
   B(B&){}
   // try the following instead
   // B(const B&){}

   B(A){}
   operator A(){ return A();}
};

B source() { return A(); }

int main()
{
   B ap(source());   // C4350
}