共用方式為


/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 (一致性)