template entre diferencia c++ templates metaprogramming generic-programming

c++ - entre - ¿Qué significa "typename=" en los parámetros de la plantilla?



template typename t (1)

Ese es un parámetro de plantilla opcional sin nombre y un valor predeterminado.
Se utiliza para aplicar la condición enable_if ; creará un error de compilación si la condición no se cumple.

Puede usar exactamente la misma sintaxis para los argumentos de métodos normales.

He visto esta expresión en la página 189 del libro "Effective Modern C ++":

template<typename T, typename = typename std::enable_if<condition>::type> explicit Person(T&& n);

Me pregunto qué significa la parte " typename = ". Ciertamente parece un argumento predeterminado para un parámetro de plantilla. ¿Pero no necesitas algo como " typename some_name = ... " en un argumento predeterminado? No hay un nombre para el segundo argumento de plantilla, y no veo que se esté utilizando el segundo argumento de plantilla en este caso.

PD: Cuando busco en google (o en cualquier otro motor de búsqueda) una respuesta, el signo igual siempre se descarta, y esto hace que sea casi imposible encontrar una respuesta ...