/Zc:referenceBinding (Wymuszanie zasad powiązania odwołań)
Po określeniu opcji /Zc:referenceBinding kompilator nie zezwala na powiązanie z tymczasowym odwołaniem innego niż const lvalue.
Składnia
/Zc:referenceBinding[-]
Uwagi
Jeśli /Zc:referenceBinding jest określony, kompilator jest zgodny z sekcją 8.5.3 standardu C++11: nie zezwala na wyrażenia, które wiążą typ zdefiniowany przez użytkownika tymczasowe do odwołania innego niż const lvalue. Domyślnie lub jeśli /Zc:referenceBinding- jest określony, kompilator zezwala na takie wyrażenia jak rozszerzenie firmy Microsoft, ale zostanie wyświetlone ostrzeżenie poziomu 4. W przypadku zabezpieczeń kodu, przenośności i zgodności zalecamy użycie polecenia /Zc:referenceBinding.
Opcja /Zc:referenceBinding jest domyślnie wyłączona. / permissive- kompilator opcji niejawnie ustawia tę opcję, ale można ją zastąpić za pomocą / Zc:referenceBinding-.
Przykład
W tym przykładzie pokazano rozszerzenie firmy Microsoft, które umożliwia tymczasowe powiązanie typu zdefiniowanego przez użytkownika z odwołaniem innego niż 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
}
Aby uzyskać więcej informacji na temat problemów ze zgodnością w programie Visual C++, zobacz Zachowanie niezgodne.
Aby ustawić tę opcję kompilatora w środowisku programowania Visual Studio
Otwórz okno dialogowe Strony właściwości projektu. Aby uzyskać szczegółowe informacje, zobacz Set C++ compiler and build properties in Visual Studio (Ustawianie właściwości kompilatora języka C++ i kompilowania w programie Visual Studio).
Wybierz stronę Właściwości>konfiguracji C/C++>Wiersza polecenia.
Zmodyfikuj właściwość Opcje dodatkowe, aby uwzględnić /Zc:referenceBinding, a następnie wybierz przycisk OK.
Zobacz też
Opcje kompilatora MSVC
Składnia wiersza polecenia kompilatora MSVC
/Zc (Zgodność)