/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

  1. 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).

  2. Wybierz stronę Właściwości>konfiguracji C/C++>Wiersza polecenia.

  3. 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ść)