/Zc:referenceBinding (強制執行參考繫結規則)
指定 /Zc:referenceBinding 選項時,編譯程式不允許非 const lvalue 參考系結至暫存。
語法
/Zc:referenceBinding[-]
備註
如果 指定 /Zc:referenceBinding ,編譯程式會遵循 C++11 標準的第 8.5.3 節:它不允許將使用者定義類型暫時系結至非 const lvalue 參考的表達式。 根據預設,或 指定 /Zc:referenceBinding- 時,編譯程式允許Microsoft延伸模組等表達式,但發出層級 4 警告。 針對程式代碼安全性、可移植性和一致性,建議您使用 /Zc:referenceBinding。
/Zc:referenceBinding 選項預設為關閉。 /permissive- 編譯程式選項會隱含地設定此選項,但可以使用 /Zc:referenceBinding-加以覆寫。
範例
此範例顯示Microsoft延伸模組,可讓使用者定義型別的暫存系結至非 const lvalue 參考。
// 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
}
如需 Visual C++ 中一致性問題的詳細資訊,請參閱 Nonstandard Behavior。
在 Visual Studio 開發環境中設定這個編譯器選項
開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性。
選取 [組態屬性]>[C/C++]>[命令列] 屬性頁。
修改 [其他選項] 屬性以包含 /Zc:referenceBinding,然後選擇 [確定]。