¿Cómo puedo definir una clase de plantilla que proporcione una constante entera que represente la "profundidad" de un tipo (puntero) provisto como el argumento de la plantilla de entrada? Por ejemplo, si la clase se llama Depth
, lo siguiente sería cierto:¿Cómo puedo definir una clase de plantilla que proporcione la profundidad/nivel del puntero de un tipo?
Depth<int ***>::value == 3
Depth<int>::value == 0
Gracias James, y la última oración es muy útil también. – user2023370
Un truco es pasar siempre 'T const volátil' a la siguiente recursión, y luego solo coincide con' '. Esto es algo así como un truco, pero funcionaría para evitar escribir versiones especiales const/volátiles. –
@Johannes: Agradable; que elimina la necesidad de ''. No creo que sea particularmente hackish; al menos, no más de un hack que muchos otros rasgos de tipo :-) –