对于我的程序,我需要定义一个求解器类,它可以解决问题或嵌套问题。是否有可能为模板类型专门化模板?
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类型,以便正确地定义类型和调用正确的函数。
仅仅是一个简单的错误还是不可能定义这样的类?
不应该是'SubT :: a();'? – 2012-07-30 13:48:03
没关系。 SubT :: func()只是表示一个被调用的静态函数。这个函数的名字对于这个示例代码是不重要的。重要的一点是有两个问题的类型:即主要ProblemT和SumT – 2012-07-30 13:50:35
您误会了。我的意思是建议专业化应该是递归的,并使用嵌套类型。 – 2012-07-30 13:52:02