Meneruskan fungsi sebagai parameter template kelas dengan tipe yang tidak diketahui
Dec 01 2020
Saya tahu kita bisa melakukan sesuatu seperti ini:
void f1(){ printf("1"); }
void f2(){ printf("2"); }
template <void F()>
class A{
public:
void func(){
F();
}
};
int main(){
A<f1> a1; a1.func(); // printing "1"
A<f2> a2; a2.func(); // printing "2"
}
Lalu, apakah mungkin tanpa mengetahui tipe return dan argumen dari fungsi f1 dan f2? Sebagai contoh,
void f1(){ ... }
int f2(){ ... }
int main(){
A<f1> a1; a1.f();
A<f2> a2; a2.f();
}
Terima kasih.
Jawaban
3 Jarod42 Dec 01 2020 at 15:30
Di C ++ 17, Anda cukup menggunakan auto
template <auto F>
class A{
public:
void func(){
F();
}
};
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'