Udostępnij za pośrednictwem


C4350 (poziom 1) ostrzeżenia kompilatora

Zmiana zachowania: "Członek1" o nazwie zamiast "member2"

Rvalue nie może być powiązane odwołania nie const.W poprzednich wersjach języka Visual C++ było możliwe powiązać rvalue odniesienia nie const podczas inicjowania bezpośrednich.Ten kod teraz wyświetla ostrzeżenie.

W celu zapewnienia zgodności z poprzednimi wersjami nadal można powiązać z odwołania do innych niż const rvalues, ale konwersji standardowych preferowane są, tam gdzie to możliwe.

Ostrzeżenie to stanowi zmianę zachowania z Visual C++.NET 2002 kompilatora.Jeśli włączona, to ostrzeżenie może prawdopodobnie należy podać prawidłowy kod.Na przykład, może być podane, gdy za pomocą std::auto_ptr szablonu klasy.

Jeśli otrzymasz to ostrzeżenie, należy zbadać kod, aby sprawdzić, czy to zależy od rvalues powiązania nie const odwołań.Dodawanie const odniesienia lub zapewnienie dodatkowych przeciążenie const odniesienia może rozwiązać ten problem.

To ostrzeżenie jest domyślnie wyłączona.Aby uzyskać więcej informacji, zobacz Kompilator ostrzeżenia że są wyłączone domyślnie.

Poniższy przykład generuje 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
}