/Zc:referenceBinding (Applica regole di associazione di riferimento)
Quando si specifica l'opzione /Zc:referenceBinding , il compilatore non consente a un riferimento lvalue non const di eseguire l'associazione a un oggetto temporaneo.
Sintassi
/Zc:referenceBinding[-]
Osservazioni:
Se si specifica /Zc:referenceBinding , il compilatore segue la sezione 8.5.3 dello standard C++11: non consente espressioni che associano un tipo definito dall'utente temporaneo a un riferimento lvalue non const. Per impostazione predefinita, o se viene specificato /Zc:referenceBinding, il compilatore consente tali espressioni come estensione Microsoft, ma viene generato un avviso di livello 4. Per la sicurezza del codice, la portabilità e la conformità, è consigliabile usare /Zc:referenceBinding.
L'opzione /Zc:referenceBinding è disattivata per impostazione predefinita. L'opzione del compilatore /permissive- imposta in modo implicito questa opzione, ma può essere sottoposta a override usando /Zc:referenceBinding-.
Esempio
Questo esempio mostra l'estensione Microsoft che consente di associare un tipo temporaneo di un tipo definito dall'utente a un riferimento lvalue non const.
// zcreferencebinding.cpp
struct S {
};
void f(S&) {
}
S g() {
return S{};
}
int main() {
S& s = g(); // warning C4239 at /W4
const S& cs = g(); // okay, bound to const ref
f(g()); // Extension: error C2664 only if /Zc:referenceBinding
}
Per altre informazioni sui problemi di conformità in Visual C++, vedere Nonstandard Behavior.
Per impostare l'opzione del compilatore nell'ambiente di sviluppo di Visual Studio
Aprire la finestra di dialogo Pagine delle proprietà del progetto. Per informazioni dettagliate, vedere Impostare il compilatore e le proprietà di compilazione.
Selezionare la pagina delle proprietà Proprietà di configurazione>C/C++>Riga di comando.
Modificare la proprietà Opzioni aggiuntive per includere /Zc:referenceBinding e quindi scegliere OK.
Vedi anche
Opzioni del compilatore MSVC
Sintassi della riga di comando del compilatore MSVC
/Zc (conformità)