开发者

How to correctly initialize member variable of template type?

suggest i have a template function like following:

template<class T>
void doSomething()
{
    T a; // a is correctly initialized if T is a class with a default constructor
    ...
};

But variable a leaves uninitialized, if T is a primitive type. 开发者_C百科I can write T a(0), but this doesn't work if T is a class. Is there a way to initialize the variable in both cases (T == class, T == int, char, bool, ...)?


Like so:

T a{};

Pre-C++11, this was the simplest approximation:

T a = T();

But it requires T be copyable (though the copy is certainly going to be elided).


Class template field in C++11 has the same syntax:

template <class T>
class A {
  public:
    A() {}
    A(T v) : val(v) {}
  private:
    T val{};
};
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜