C4350 de aviso (nível 1) do compilador
mudança de comportamento: 'member1' chamada em vez de 'member2'
Um rvalue não pode ser vinculado a uma referência não-const.Nas versões anteriores do Visual C++, foi possível vincular um rvalue a referência não-const em uma inicialização direta.Esse código agora oferece um aviso.
Para compatibilidade com versões anteriores, ainda é possível vincular rvalues referências de não-const, mas conversões padrão são preferidas, sempre que possível.
Este aviso representa uma alteração de comportamento do Visual C++.NET 2002 compilador.Se ativado, este aviso possivelmente poderia ser fornecido para o código correto.Por exemplo, ele poderia ser dada ao usar o std::auto_ptr modelo de classe.
Se você receber esse aviso, examine seu código para ver se ele depende de ligação rvalues referências de não-const.Adicionando uma const à referência ou fornecendo uma sobrecarga adicional de referência const pode resolver o problema.
Este aviso está desativado por padrão.Para obter mais informações, consulte Compilador avisos que está desativado por padrão.
O exemplo a seguir gera 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
}