En this question el OP pidió una solución a la plantilla typedef que no es posible en C++. El PO también presentó una solución a sí mismos, pero no le gustó:¿Por qué es la plantilla typedef un problema en C++ (no C++ 11)
template<size_t N, size_t M>
class Matrix {
// ....
};
// Problem - will not compile
typedef Matrix<N,1> Vector<N>;
// Solution
template <int N>
class Vector: public Matrix<N,1>
{ };
Mi pregunta es, ¿qué ventaja tiene el Helper::type
solution nos dé sobre la solución de la OP (suponiendo que estas clases no están hechas para ser utilizado por un puntero de base o new
'd como tal)? Una clase vacía no debería tener gastos generales en el lanzamiento (¿o no?). La única desventaja que puedo ver es que en las compilaciones de depuración tendrás que expandir la clase base al depurar.
EDIT: Además de la respuesta seleccionada, consulte la respuesta de @ Dani que sugirió que la versión heredada requeriría la definición de constructores, lo que es un inconveniente adicional.
Si nada más, 'Helper :: type' es realmente el tipo correcto. Ha pasado un tiempo desde que cavé seriamente en esas cosas, pero IIRC hay algunos problemas sutiles con la deducción de tipos y cosas por el estilo. – Hurkyl