GCC 4.8.1輸出
error: type/value mismatch at argument 2 in template parameter list for ‘template<class L, template<class> class F> class N’
class N<L, S<L> > : public Class1
^
test.cpp:14:17: error: expected a class template, got ‘S<L>’
不擅長小號明確,只是做:
template <class L>
class N<L, S> : public Class1 { };
工作例如:
class Class1 {};
template <class L, template<class> class F>
class N : public Class1, public F<L> { };
template <class L>
class S;
template <class L>
class N<L, S> : public Class1 { };
int main() {}
編輯:我的猜測是,你可能希望能夠寫類似
int main()
{
N<int> n;
}
但是上面這個代碼將無法編譯:
error: wrong number of template arguments (1, should be 2)
N<int> n;
^
error: provided for ‘template<class L, template<class> class F> class N’
class N : public Class1, public F<L>
^
error: invalid type in declaration before ‘;’ token
N<int> n;
你或許應該忘記的專業化,使用默認模板參數:
template <class L, template<class> class F = S>
class N : public Class1, public F<L> { };
工作例如:
class Class1 {};
template <class L>
class S {};
template <class L, template<class> class F = S>
class N : public Class1, public F<L> {};
int main()
{
N<int> n;
}