¿Cómo puedo forzar que un parámetro de plantilla T
sea una subclase de una clase específica Baseclass
? Algo como esto:Restringir el parámetro de plantilla de C++ a la subclase
template <class T : Baseclass> void function(){
T *object = new T();
}
¿Qué estás tratando de lograr al hacer esto? – sth
Solo quiero asegurarme de que T sea en realidad una instancia de una subclase o la clase misma. El código dentro de la función que he proporcionado es bastante irrelevante. – phant0m
por el contrario, es muy relevante. Determina si es una buena idea o no poner el trabajo en esa prueba. En muchos (¿todos?) Casos, no hay absolutamente ninguna necesidad de imponer esas restricciones usted mismo, sino dejar que el compilador lo haga al crear instancias. Por ejemplo, para la respuesta aceptada, sería bueno verificar si 'T' deriva de' Baseclass'. A partir de ahora, esa verificación es implícita y no es visible para sobrecargar la resolución. Pero si no se hace tal restricción implícita, no parece haber ninguna razón para una restricción artificial. –