Plantillas C ++: cómo determinar si un tipo es adecuado para subclasificar
Digamos que tengo alguna clase de plantilla según el tipoT
. T
podría ser casi cualquier cosa:int
, int*
, pair <int, int>
ostruct lol
; no puede servoid
, una referencia o cualquier cosa calificada por cv. Para alguna optimización, necesito saber si puedo subclasificarT
. Entonces, necesitaría algún tipo de rasgois_subclassable
, determinado como una combinación lógica de rasgos básicos o mediante algunos trucos de SFINAE.
En el ejemplo original,int
yint*
no son subclassables, mientras quepair <int, int>
ystruct lol
son
EDITA: Como se señala a continuación en litb, los sindicatos tampoco son subclasables yT
también puede ser un tipo de unión.
¿Cómo escribo el tipo de rasgo que necesito?