Upozornění kompilátoru (úroveň 1) C4350
změna chování: byl zavolán člen 'member1' místo členu 'member2'
Hodnota rvalue nemůže být vázána na nekonstanční odkaz. Ve verzích Visual C++ před sadou Visual Studio 2003 bylo možné svázat rvalue s odkazem bez const v přímé inicializaci. Tento kód teď zobrazí upozornění.
Kvůli zpětné kompatibilitě je stále možné svázat hodnoty rvalue s odkazy bez const, ale standardní převody jsou upřednostňované všude, kde je to možné.
Toto upozornění představuje změnu chování kompilátoru Visual C++ .NET 2002. Pokud je toto upozornění povolené, může být toto upozornění pravděpodobně zadáno pro správný kód. Může se například dát při použití šablony třídy std::auto_ptr .
Pokud se zobrazí toto upozornění, zkontrolujte kód a zjistěte, jestli závisí na vazbách rvalue s odkazy, které nejsou const. Přidáním const do odkazu nebo poskytnutím dalšího přetížení const-reference může problém vyřešit.
Toto upozornění je ve výchozím nastavení vypnuté. Další informace najdete v tématu Upozornění kompilátoru, která jsou ve výchozím nastavení vypnutá.
Následující ukázka vygeneruje 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
}