C++ invoke explicit template constructor
¿Puede decirme cómo invocar constructor de plantilla explícitamente (en la lista inicializador)? por ejemplo:
struct T {
template<class> T();
};
struct U {
U() : t<void>() {} //does not work
T t;
};
Gracias
38
1 answers
No Es posible. El Estándar también tiene una nota sobre esto en 14.8.1/7
[Nota: debido a que la lista de argumentos de plantilla explícita sigue el nombre de la plantilla de función, y debido a que las plantillas de función miembro de conversión y las plantillas de función miembro constructor se llaman sin usar un nombre de función, no hay forma de proporcionar una lista de argumentos de plantilla explícita para estas plantillas de función. ]
Si puedes vivir con él, puedes trabajar alrededor
struct T {
template<class U> T(identity<U>);
};
struct U {
U() : t(identity<void>()) {}
T t;
};
Dado identity
como se define en boost
template<typename T> struct identity { typedef T type; };
38
Author: Johannes Schaub - litb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-15 11:00:41
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-15 11:00:41