/Zc:lambda (Güncelleştirilmiş lambda işlemcisini etkinleştir)

Derleyici /Zc:lambda seçeneği uyumlu lambda dil bilgisi ve işleme desteği sağlar.

Sözdizimi

/Zc:lambda[-]

Açıklamalar

Derleyici /Zc:lambda seçeneği uyumlu lambda işlemcisini etkinleştirir. Lambda kodunu C++ standardına göre ayrıştırıp uygular. Bu seçenek varsayılan olarak kapalıdır ve bu seçenek eski lambda işlemcisini kullanır. Varsayılan /std:c++14 veya /std:c++17 derleyici seçeneklerini kullandığınızda genel lambdaların uyumluluk modu söz dizimi denetimlerini etkinleştirmek için bu seçeneği kullanın.

/Zc:lambda, [/std:c++latest] (std-specify-language-standard-version.md), /permissive-ve /experimental:module seçenekleri tarafından /std:c++20otomatik olarak etkinleştirilir. kullanarak /Zc:lambda-açıkça devre dışı bırakabilirsiniz.

Bu /Zc:lambda seçenek Visual Studio 2019 sürüm 16.8'den itibaren kullanılabilir. Visual Studio 2019 sürüm 16.3'te başlarken /experimental:newLambdaProcessor kullanılabilir, ancak bu yazım artık kullanım dışıdır.

Eski lambda işlemcisinin lambdaları ayrıştırıp derlediğinde sınırlamaları vardır. Örneğin, bu uyumlu kod altında /Zc:lambdadoğru şekilde derleniyor, ancak altında /Zc:lambda-hataları bildiriyor:

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
}

Eski lambda işlemcisi bu kodu uyarı olmadan derler, ancak yeni lambda işlemcisi C2760 hatasını üretir:

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

Bu örnekte, derleyici /Zc:lambdatarafından altında zorlanan doğru söz dizimi gösterilmektedir:

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

Visual Studio'da bu derleyici seçeneğini ayarlamak için

  1. Projenin Özellik Sayfaları iletişim kutusunu açın. Ayrıntılar için bkz . Visual Studio'da C++ derleyicisi ve derleme özelliklerini ayarlama.

  2. Yapılandırma Özellikleri>C/C++>Komut Satırı özellik sayfasını seçin.

  3. Ek seçenekler: bölmesine veya /Zc:lambda- ekleyin/Zc:lambda.

Ayrıca bkz.

/Zc (Uyumluluk)
/std (Dil standart sürümünü belirtin)