내 프로그램에 대해 해답 클래스를 정의해야 문제 또는 중첩 된 문제를 해결할 수 있습니다.템플릿 형식의 템플릿을 전문화 할 수 있습니까?
template< typename ProblemT >
struct Solver {
static void a() {
ProblemT::func();
}
};
template< typename < typename SubT> ProblemT >
struct Solver<ProblemT< SubT> > {
static void a() {
ProblemT::func();
SubT::func();
}
};
사용법 : 찾기의 전문 버전에서
Solver<Problem1> solver;
Solver<Problem2<Problem3> > nested_solver;
내가 제대로 유형을 정의하고 올바른 함수를 호출하기 위해 모두 ProblemT 및 부제에게 유형을 알아야합니다.
단순한 오류가 있습니까? 아니면 그러한 클래스를 정의 할 수 없습니까?
'SubT :: a();'가 아니어야합니까? –
그건 중요하지 않습니다. SubT :: func()은 호출되는 정적 함수를 나타냅니다. 이 함수의 이름은이 샘플 코드에서 중요하지 않습니다. 중요한 포인트는 두 가지 문제, 즉 주요 ProblemT와 SumT –
의 유형을 잘못 이해하는 것입니다. 나는 전문화가 재귀 적이어야하고 중첩 된 유형을 사용해야한다고 제안하고자했다. –