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{};
};