/Zc:referenceBinding (Verweisbindungsregeln erzwingen)
Wenn die Option "/Zc:referenceBinding " angegeben ist, lässt der Compiler keinen Nichtkonst-Lvalue-Verweis für die Bindung an einen temporären Wert zu.
Syntax
/Zc:referenceBinding[-]
Hinweise
Wenn /Zc:referenceBinding angegeben ist, folgt der Compiler Abschnitt 8.5.3 des C++11-Standards: Es werden keine Ausdrücke zugelassen, die einen benutzerdefinierten Typ vorübergehend an einen nicht-const lvalue-Verweis binden. Standardmäßig oder wenn /Zc:referenceBinding- angegeben ist, lässt der Compiler solche Ausdrücke wie eine Microsoft-Erweiterung zu, aber eine Warnung der Ebene 4 wird ausgegeben. Für Codesicherheit, Portabilität und Konformität empfehlen wir die Verwendung von /Zc:referenceBinding.
Die Option "/Zc:referenceBinding " ist standardmäßig deaktiviert. Die Option "/permissive-compiler " legt diese Option implizit fest, kann jedoch mithilfe von /Zc:referenceBinding-überschrieben werden.
Beispiel
In diesem Beispiel wird die Microsoft-Erweiterung gezeigt, mit der ein temporärer benutzerdefinierter Typ an einen Nichtkonst-Lvalue-Verweis gebunden werden kann.
// 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
}
Weitere Informationen über Konformitätsprobleme in Visual C++ finden Sie unter Nonstandard Behavior.
So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest
Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Weitere Informationen erhalten Sie unter Set C++ compiler and build properties in Visual Studio (Festlegen der Compiler- und Buildeigenschaften (C++) in Visual Studio).
Klicken Sie auf der Eigenschaftenseite auf Konfigurationseigenschaften>C/C++>Befehlszeile.
Ändern Sie die Eigenschaft "Zusätzliche Optionen", um "/Zc:referenceBinding" einzuschließen, und wählen Sie dann "OK" aus.
Siehe auch
MSVC-Compileroptionen
Syntax für die MSVC-Compilerbefehlszeile
/Zc (Übereinstimmung)