Partilhar via


Aviso do compilador (nível 1) C4350

mudança de comportamento: 'membro1' invocado em vez de 'membro2'

Observações

Um rvalue não pode ser vinculado a uma referência non-const. Em versões do Visual C++ anteriores ao Visual Studio 2003, era possível vincular um rvalue a uma referência não-const em uma inicialização direta. Este código agora dá um aviso.

Para compatibilidade com versões anteriores, ainda é possível vincular rvalues a referências não-const, mas as conversões padrão são preferidas sempre que possível.

Esse aviso representa uma alteração de comportamento do compilador do Visual C++ .NET 2002. Se ativado, este aviso pode ser dado para o código correto. Por exemplo, ele pode ser fornecido ao usar o modelo de classe std::auto_ptr .

Se você receber esse aviso, examine seu código para ver se ele depende da vinculação de rvalues a referências não-const. Adicionar uma const à referência ou fornecer uma sobrecarga adicional de const-reference pode resolver o problema.

Este aviso está desativado por padrão. Para obter mais informações, consulte Avisos do compilador que estão desativados por padrão.

Example

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
}