/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
Otevřete dialogové okno Stránky vlastností projektu. Podrobnosti najdete v tématu Nastavení kompilátoru C++ a vlastností sestavení v sadě Visual Studio.
Vyberte stránku vlastností příkazového řádku C/C++>Vlastnosti>konfigurace.
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)