Avviso del compilatore (livello 1) C4350
modifica del comportamento: viene chiamato 'membro1' anziché 'membro2'
Non è possibile associare un valore rvalue a un riferimento non const.Nelle versioni di Visual C++ precedenti era consentito associare un valore rvalue a un riferimento non const in un'inizializzazione diretta.Il codice ora genera un avviso.
Per la compatibilità con le versioni precedenti, l'associazione di valori rvalue a riferimenti non const è ancora ammessa, ma è preferibile utilizzare le conversioni standard, se possibile.
L'avviso rappresenta una modifica del comportamento rispetto al compilatore di Visual C++ .NET 2002 e,se attivato, consente di esaminare la correttezza del codice.L'avviso può ad esempio essere generato quando si utilizza la classe modello std::auto_ptr.
Se si visualizza questo avviso, esaminare il codice per verificare se l'avviso è stato generato a causa di un'associazione di valori rvalue a riferimenti non const.Aggiungendo const al riferimento o specificando un overload del riferimento const aggiuntivo, sarà possibile risolvere il problema.
Per impostazione predefinita, questo avviso non è attivo.Per ulteriori informazioni, vedere Avvisi del compilatore disattivati per impostazione predefinita.
Nell'esempio seguente viene generato l'errore 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
}