我正在编写一个带有一个类型参数和一个布尔值的模板类,这里是代码:
template<class T, bool p = true>
class A
{
private:
T* ptr;
public:
A();
};
template<class T>
A<T,true>::A()
{
ptr = 0xbaadf00d;
}
int main()
{
A<int> obj;
A<int, false> o;
return(0);
}
我收到了这些编译错误:
Error 1 error C3860: template argument list following class template name must list parameters in the order used in template parameter list tst.cpp 15
Error 2 error C2976: 'A<T,p>' : too few template arguments tst.cpp 15
我究竟做错了什么?还是出于某种原因禁止部分专门化非类型参数?
同时,如果我在 if 语句中使用布尔参数,我会收到以下警告:
Warning 1 warning C4127: conditional expression is constant
所以我应该为这种事情做专业化......
任何帮助将不胜感激!:)
提前致谢!!!!