建议我有以下模板功能:
template<class T>
void doSomething()
{
T a; // a is correctly initialized if T is a class with a default constructor
...
};
但是如果T是原始类型,则变量a未初始化。我可以写T a(0),但如果T是一个类,这不起作用。有没有办法在两种情况下初始化变量(T == class,T == int,char,bool,...)?
答案 0 :(得分:33)
像这样:
T a{};
Pre-C ++ 11,这是最简单的近似值:
T a = T();
但它需要T
可复制(虽然副本肯定会被删除)。
答案 1 :(得分:1)
C ++ 11中的类模板字段具有相同的语法:
template <class T>
class A {
public:
A() {}
A(T v) : val(v) {}
private:
T val{};
};