Sdílet prostřednictvím


/Zc:lambda (Povolení aktualizovaného procesoru lambda)

Možnost kompilátoru /Zc:lambda umožňuje splňovat podporu gramatiky a zpracování lambda.

Syntaxe

/Zc:lambda[-]

Poznámky

Možnost /Zc:lambda kompilátoru umožňuje odpovídající procesor lambda. Parsuje a implementuje kód lambda podle standardu C++. Tato možnost je ve výchozím nastavení vypnutá, která používá starší procesor lambda. Pomocí této možnosti můžete povolit kontroly syntaxe v režimu shody obecných lambda při použití výchozích /std:c++14 možností nebo možností kompilátoru /std:c++17 .

/Zc:lambda je automaticky povolena pomocí /std:c++20možnosti , [/std:c++latest] (std-specify-language-standard-version.md) /permissive-a /experimental:module možnosti. Explicitně ho můžete zakázat pomocí ./Zc:lambda-

Tato /Zc:lambda možnost je dostupná od sady Visual Studio 2019 verze 16.8. Je k dispozici od /experimental:newLambdaProcessor sady Visual Studio 2019 verze 16.3, ale tato kontrola pravopisu je teď zastaralá.

Starší procesor lambda má při analýze a kompilaci lambda omezení. Například tento odpovídající kód se správně zkompiluje pod /Zc:lambda, ale hlásí chyby v /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
}

Starší procesor lambda tento kód zkompiluje bez upozornění, ale nový procesor lambda způsobí chybu C2760:

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

Tento příklad ukazuje správnou syntaxi, kterou teď kompilátor vynucuje v části /Zc:lambda:

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

Nastavení této možnosti kompilátoru v sadě 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. Přidejte /Zc:lambda nebo /Zc:lambda- do podokna Další možnosti:

Viz také

/Zc (Shoda)
/std (Určení standardní verze jazyka)