알 수없는 유형의 클래스 템플릿 매개 변수로 함수 전달
Dec 01 2020
다음과 같이 할 수 있습니다.
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"
}
그렇다면 함수 f1 및 f2의 반환 및 인수 유형을 알지 않고도 가능합니까? 예를 들면
void f1(){ ... }
int f2(){ ... }
int main(){
A<f1> a1; a1.f();
A<f2> a2; a2.f();
}
감사.
답변
3 Jarod42 Dec 01 2020 at 15:30
C ++ 17에서는 간단히 auto
template <auto F>
class A{
public:
void func(){
F();
}
};