Ostrzeżenie kompilatora (poziom 1) C4350
Zmiana zachowania: nazywany "Członek1" zamiast "member2"
R-wartości nie może być powiązana referencyjny.W poprzednich wersjach programu Visual C++ było możliwe referencyjny podczas inicjowania bezpośrednio powiązać z r-wartości.Ten kod wyświetla teraz ostrzeżenie.
Dla zgodności z poprzednimi wersjami jest nadal możliwe powiązać odwołań innych niż stała rvalues, ale konwersji standardowych są preferowane, gdy jest to możliwe.
Ostrzeżenie to stanowi zmianę zachowania z kompilatora Visual C++ .NET 2002.Jeśli włączone, to ostrzeżenie może ewentualnie mieć prawidłowy kod.Na przykład może być podane podczas korzystania z std::auto_ptr szablonu klasy.
Jeśli otrzymasz to ostrzeżenie, należy zbadać swój kod, aby sprawdzić, czy to zależy od rvalues powiązania odwołań innych niż stała.Dodawanie const do odwołania lub zapewniając dodatkowe przeciążenie const odwołanie może rozwiązać problem.
To ostrzeżenie jest domyślnie wyłączona.Aby uzyskać więcej informacji, zobacz Kompilator ostrzeżenia czy są wyłączone domyślnie.
Poniższy przykład spowoduje wygenerowanie błędu 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
}