with programacion only non initializers data available c++ templates

c++ - only - manual de programacion android pdf



¿Cómo inicializar correctamente la variable miembro del tipo de plantilla? (2)

Al igual que:

T a{};

Pre-C ++ 11, esta era la aproximación más simple:

T a = T();

Pero requiere que T pueda copiar (aunque la copia se eliminará).

sugiero que tengo una función de plantilla como la siguiente:

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

Pero la variable a deja sin inicializar, si T es un tipo primitivo. Puedo escribir T a (0), pero esto no funciona si T es una clase. ¿Hay alguna manera de inicializar la variable en ambos casos (T == clase, T == int, char, bool, ...)?


El campo de plantilla de clase en C ++ 11 tiene la misma sintaxis:

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