Ответ 1
Так же:
T a{};
Pre-С++ 11, это было простейшее приближение:
T a = T();
Но для этого требуется T
быть скопируемым (хотя копия, безусловно, будет удалена).
предлагаю, что у меня есть функция шаблона, например:
template<class T>
void doSomething()
{
T a; // a is correctly initialized if T is a class with a default constructor
...
};
Но переменная a оставляет неинициализированным, если T - примитивный тип. Я могу написать T a (0), но это не работает, если T - класс. Есть ли способ инициализировать переменную в обоих случаях (T == class, T == int, char, bool,...)?
Так же:
T a{};
Pre-С++ 11, это было простейшее приближение:
T a = T();
Но для этого требуется T
быть скопируемым (хотя копия, безусловно, будет удалена).
Поле шаблона класса в С++ 11 имеет тот же синтаксис:
template <class T>
class A {
public:
A() {}
A(T v) : val(v) {}
private:
T val{};
};