Bagikan melalui


/Zc:templateScope (Periksa bayangan parameter templat)

Opsi /Zc:templateScope pengkompilasi memungkinkan pemeriksaan perilaku C++ Standar sekeliling bayangan parameter templat.

Sintaks

/Zc:templateScope[-]

Keterangan

Standar C++ tidak mengizinkan penggunaan kembali nama parameter templat (atau bayangan) untuk deklarasi lain dalam cakupan templat. Opsi /Zc:templateScope pengkompilasi memungkinkan pemeriksaan kesalahan untuk bayangan tersebut.

Opsi /Zc:templateScope ini baru di Visual Studio 2022 versi 17.5 pratinjau 1. Opsi nonaktif secara default bahkan ketika kode dikompilasi menggunakan /permissive- opsi (atau opsi yang menyiratkan /permissive-, seperti /std:c++20 atau /std:c++latest). Untuk mengaktifkan pemeriksaan kesalahan, Anda harus secara eksplisit menambahkan /Zc:templateScope ke baris perintah pengkompilasi. Untuk menonaktifkan pemeriksaan secara eksplisit, gunakan /Zc:templateScope- opsi .

Contoh

Di bawah /Zc:templateScope, kode sampel ini menghasilkan kesalahan:

template<typename T>
void f(T&& t) {
    int T = 13;
}

/* Output:
t.cpp(3): error C7527: 'T': a template parameter name cannot be reused within its scope
*/

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. Di Opsi tambahan, tambahkan /Zc:templateScope atau /Zc:templateScope-. Pilih OK atau Terapkan untuk menyimpan perubahan Anda.

Lihat juga

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