Iam使用不支持c ++ 11的编译器,它不支持类声明的默认初始化。
由于我有一些管理可视化的类,并且包含大量bool标志和其他成员,我想编写一些执行默认初始化的模板类。
我可以实现类似的东西:
template <unsigned int I>
class UIntDef{
public:
UIntDef(unsigned int d=I):i(d){
cout << "init i="<<d<<endl;
}
operator unsigned int&(){return i;}
unsigned int i;
};
或
template <bool I>
class BoolDef{
public:
BoolDef(bool d=I):i(d){
cout << "init i="<<d<<endl;
}
operator bool&(){return i;}
bool i;
};
但我还想使用type作为模板参数
template <type T, T I>
class Def{
public:
Def(T d=I):i(d){
cout << "init i="<<d<<endl;
}
operator T&(){return i;}
T i;
};
显然最后一个例子不起作用。 有没有办法实现这个或已经存在这样的事情?