Digamos que tengo alguna clase de plantilla dependiendo del tipo T
. T
podría ser casi cualquier cosa: int
, int*
, pair <int, int>
o struct lol
; no puede ser void
, una referencia o cualquier cosa cv-calificado sin embargo. Para cierta optimización, necesito saber si puedo crear la subclase T
. Por lo tanto, necesitaría algún tipo de rasgo is_subclassable
, determinado como una combinación lógica de rasgos básicos o mediante algunos trucos de SFINAE.Plantillas de C++: cómo determinar si un tipo es adecuado para la subclase
En el ejemplo original, int
y int*
no son subclases, mientras pair <int, int>
y struct lol
son.
EDIT: Como se indica a continuación, las uniones tampoco son subclasificables y T
también pueden ser un tipo de unión.
¿Cómo escribo el tipo de rasgo que necesito?
Hmm. ¿Sería [is_class] (http://msdn.microsoft.com/en-us/library/bb982638.aspx) suficiente? No es seguro. –