Pertanyaan yang diberi tag «template-specialization»


4
Mengapa template fungsi tidak dapat dikhususkan sebagian?
Saya tahu spesifikasi bahasa melarang spesialisasi parsial dari template fungsi. Saya ingin tahu alasan mengapa melarangnya? Apakah mereka tidak berguna? template<typename T, typename U> void f() {} //allowed! template<> void f<int, char>() {} //allowed! template<typename T> void f<char, T>() {} //not allowed! template<typename T> void f<T, int>() {} //not allowed!

1
Apakah Dentang benar untuk menolak kode di mana kelas bersarang dari templat kelas didefinisikan hanya melalui spesialisasi?
Diberikan templat kelas berikut: template<typename T> struct Outer { struct Inner; auto f(Inner) -> void; }; kami mendefinisikan Innersecara terpisah untuk setiap spesialisasi Outer: template<> struct Outer<int>::Inner {}; template<> struct Outer<double>::Inner {}; dan kemudian mendefinisikan fungsi anggota fsekali untuk semua spesialisasi Outer: auto Outer<T>::f(Inner) -> void { } tapi Dentang …

1
dentang / gcc inkonsistensi dalam spesialisasi kelas
Saya menemukan masalah ini ketika mencoba untuk mengkhususkan tuple_size/ tuple_elementuntuk kelas khusus di C ++ 17 untuk penjilidan terstruktur. Kode di bawah ini dikompilasi dalam GCC, tetapi tidak dalam dentang (kedua versi trunk, lihat tautan di bawah). #include <type_traits> template<typename T, typename... Ts> using sfinae_t = T; template<typename T, bool... …
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.