/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
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.
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)