對於我的程序,我需要定義一個求解器類,它可以解決問題或嵌套問題。是否有可能爲模板類型專門化模板?
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