Share via


/Zc:referenceBinding (vynucení pravidel vazby odkazů)

Pokud je zadaná možnost /Zc:referenceBinding, kompilátor nepovolí odkaz lvalue, který není const lvalue, aby se svážel s dočasným odkazem.

Syntaxe

/Zc:referenceBinding[-]

Poznámky

Pokud je zadán parametr /Zc:referenceBinding , kompilátor se řídí částí 8.5.3 standardu C++11: Nepovoluje výrazy, které spojují uživatelem definovaný typ dočasný s odkazem lvalue bez const. Ve výchozím nastavení nebo pokud je zadán /Zc:referenceBinding- kompilátor umožňuje takové výrazy jako rozšíření Microsoftu, ale zobrazí se upozornění úrovně 4. Pro zabezpečení kódu, přenositelnost a soulad doporučujeme použít /Zc:referenceBinding.

Možnost /Zc:referenceBinding je ve výchozím nastavení vypnutá. Možnost kompilátoru /permissive- implicitně nastaví tuto možnost, ale lze ji přepsat pomocí /Zc:referenceBinding-.

Příklad

Tato ukázka ukazuje rozšíření Microsoftu, které umožňuje, aby byl dočasný typ definovaný uživatelem vázán na odkaz lvalue, který není 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
}

Další informace o problémech s shodami v jazyce Visual C++ naleznete v tématu Nestandardní chování.

Nastavení tohoto parametru kompilátoru ve vývojovém prostředí Visual Studio

  1. Otevřete dialogové okno Stránky vlastností projektu. Podrobnosti najdete v tématu Nastavení kompilátoru C++ a vlastností sestavení v sadě Visual Studio.

  2. Vyberte stránku vlastností příkazového řádku C/C++>Vlastnosti>konfigurace.

  3. Upravte vlastnost Další možnosti tak, aby zahrnovala /Zc:referenceBinding a pak zvolte OK.

Viz také

Parametry kompilátoru MSVC
Syntaxe příkazového řádku kompilátoru MSVC
/Zc (shoda)