/Zc:lambda
(Aktifkan prosesor lambda yang diperbarui)
Opsi /Zc:lambda
kompilator memungkinkan menyesuaikan tata bahasa lambda dan dukungan pemrosesan.
Sintaks
/Zc:lambda
[-
]
Keterangan
Opsi /Zc:lambda
kompilator memungkinkan prosesor lambda yang sesuai. Ini mengurai dan mengimplementasikan kode lambda sesuai dengan standar C++. Opsi ini nonaktif secara default, yang menggunakan prosesor lambda warisan. Gunakan opsi ini untuk mengaktifkan pemeriksaan sintaks mode kesamaan lambda generik saat Anda menggunakan opsi default /std:c++14
atau /std:c++17
pengkompilasi.
/Zc:lambda
diaktifkan secara otomatis oleh /std:c++20
opsi , [/std:c++latest
] (std-specify-language-standard-version.md), /permissive-
, dan /experimental:module
. Anda dapat menonaktifkannya secara eksplisit dengan menggunakan /Zc:lambda-
.
Opsi /Zc:lambda
ini tersedia mulai di Visual Studio 2019 versi 16.8. Ini tersedia sebagai /experimental:newLambdaProcessor
mulai di Visual Studio 2019 versi 16.3, tetapi ejaan ini sekarang tidak digunakan lagi.
Prosesor lambda warisan memiliki batasan ketika mengurai dan mengkompilasi lambda. Misalnya, kode yang sesuai ini dikompilasi dengan benar di bawah /Zc:lambda
, tetapi melaporkan kesalahan di bawah /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
}
Prosesor lambda warisan mengkompilasi kode ini tanpa peringatan, tetapi prosesor lambda baru menghasilkan kesalahan C2760:
void f2() {
auto a = [](auto arg) {
decltype(arg)::Type t; // C2760 syntax error: unexpected token 'identifier', expected ';'
};
}
Contoh ini menunjukkan sintaks yang benar, sekarang diberlakukan oleh pengkompilasi di bawah /Zc:lambda
:
void f3() {
auto a = [](auto arg) {
typename decltype(arg)::Type t;
};
}
Untuk mengatur opsi pengkompilasi ini di Visual Studio
Buka kotak dialog Halaman Properti proyek. Untuk detailnya, lihat Mengatur pengkompilasi C++ dan membuat properti di Visual Studio.
Pilih halaman properti Properti>Konfigurasi C/C++>Baris Perintah.
Tambahkan
/Zc:lambda
atau/Zc:lambda-
ke panel Opsi tambahan: .