Bagikan melalui


/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++20opsi , [/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

  1. Buka kotak dialog Halaman Properti proyek. Untuk detailnya, lihat Mengatur pengkompilasi C++ dan membuat properti di Visual Studio.

  2. Pilih halaman properti Properti>Konfigurasi C/C++>Baris Perintah.

  3. Tambahkan /Zc:lambda atau /Zc:lambda- ke panel Opsi tambahan: .

Lihat juga

/Zc (Kesuaian)
/std (Tentukan versi standar bahasa)