Passando função como um parâmetro de modelo de classe com tipo desconhecido
Dec 01 2020
Eu sei que podemos fazer algo assim:
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"
}
Então, é possível sem saber os tipos de retorno e argumento das funções f1 e f2? Por exemplo,
void f1(){ ... }
int f2(){ ... }
int main(){
A<f1> a1; a1.f();
A<f2> a2; a2.f();
}
Obrigado.
Respostas
3 Jarod42 Dec 01 2020 at 15:30
Em C ++ 17, você pode simplesmente usar auto
template <auto F>
class A{
public:
void func(){
F();
}
};
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?