/Zc:lambda (Włącz zaktualizowany procesor lambda)

Opcja /Zc:lambda kompilatora umożliwia zgodność z gramatyką lambda i obsługą przetwarzania.

Składnia

/Zc:lambda[-]

Uwagi

Opcja /Zc:lambda kompilatora włącza zgodny procesor lambda. Analizuje i implementuje kod lambda zgodnie ze standardem C++. Ta opcja jest domyślnie wyłączona, która używa starszego procesora lambda. Użyj tej opcji, aby włączyć sprawdzanie składni trybu zgodności ogólnych lambd podczas korzystania z opcji domyślnych /std:c++14 lub kompilatora /std:c++17 .

/Zc:lambda program jest automatycznie włączany przez opcje /std:c++20, [/std:c++latest] (std-specify-language-standard-version.md), /permissive-i /experimental:module . Można ją jawnie wyłączyć przy użyciu polecenia /Zc:lambda-.

Ta /Zc:lambda opcja jest dostępna od wersji 16.8 programu Visual Studio 2019. Jest ona dostępna od /experimental:newLambdaProcessor wersji 16.3 programu Visual Studio 2019, ale ta pisownia jest teraz przestarzała.

Starszy procesor lambda ma ograniczenia podczas analizowania i kompilowania lambda. Na przykład ten zgodny kod kompiluje się poprawnie w obszarze , ale zgłasza błędy w obszarze /Zc:lambda/Zc:lambda-:

void f1() 
{
    constexpr auto c_value = 1;
    auto func = []()
    {
        return c_value; // error C3493: 'c_value' cannot be implicitly captured
                        // because no default capture mode has been specified
    };
    func(); // error C2064: term does not evaluate to a function taking 0 arguments
}

Starszy procesor lambda kompiluje ten kod bez ostrzeżeń, ale nowy procesor lambda generuje błąd C2760:

void f2() {
    auto a = [](auto arg) {
        decltype(arg)::Type t; // C2760 syntax error: unexpected token 'identifier', expected ';'
    };
}

W tym przykładzie przedstawiono poprawną składnię, która jest wymuszana przez kompilator w obszarze /Zc:lambda:

void f3() {
    auto a = [](auto arg) {
        typename decltype(arg)::Type t;
    };
}

Aby ustawić tę opcję kompilatora w programie 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. Dodaj /Zc:lambda lub /Zc:lambda- do okienka Dodatkowe opcje: .

Zobacz też

/Zc (Zgodność)
/std (Określ wersję standardową języka)