共用方式為


/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 開發環境中設定這個編譯器選項

  1. 開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性

  2. 選取 [組態屬性]>[C/C++]>[命令列] 屬性頁。

  3. 修改 [其他選項] 屬性以包含 /Zc:referenceBinding,然後選擇 [確定]。

另請參閱

MSVC 編譯器選項
MSVC 編譯器命令列語法
/Zc (一致性)