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?

Respuestas a la pregunta(1)

Su respuesta a la pregunta