/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++20
otomatik 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:lambda
doğ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:lambda
tarafı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
Projenin Özellik Sayfaları iletişim kutusunu açın. Ayrıntılar için bkz . Visual Studio'da C++ derleyicisi ve derleme özelliklerini ayarlama.
Yapılandırma Özellikleri>C/C++>Komut Satırı özellik sayfasını seçin.
Ek seçenekler: bölmesine veya
/Zc:lambda-
ekleyin/Zc:lambda
.