我有以下代码:
template<class T, int I=44> struct test {T j = I;};
template<int J> struct test<int, J> {int j = J;};
int main()
{
test<55> jj;
std::cout << jj.j << std::endl;
return(1);
}
编译器(clang)仅抱怨该行test<55> jj
我不明白为什么?有解决办法吗?
如果它抱怨那条线,为什么不抱怨第二个模板定义呢?
提前致谢。
消息是:
enable.cpp:17:8: error: template argument for template type parameter must be a type
test<55> jj;
^~
enable.cpp:9:16: note: template parameter is declared here
template<class T, int I=44> struct test