Partilhar via


aviso do compilador (nível 1) C4350

Mensagem de erro

alterar de comportamento: 'member1' chamada em vez de 'member2'

Um rvalue não pode ser limite a uma referência não-const.Em versões anteriores do Visual C++, foi possível BIND 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 BIND rvalues a referências de não-const, mas conversões padrão são preferidas sempre que possível.

Este aviso representa uma alterar de comportamento do compilador do Visual C++ .NET 2002.Se ativado, esse aviso pode ter um possivelmente 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 não const referências.Adicionando uma const à referência ou fornecendo uma sobrecarga adicional de const referência pode resolver o problema.

Esse aviso está desativado por padrão.Para obter mais informações, consulte Avisos do compilador estão 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
}