plantilla variadica recursiva para imprimir el contenido de un paquete de parámetros

¿Cómo es posible crear una plantilla variada recursiva para imprimir el contenido de un paquete de parámetros? Estoy intentando con esto, pero no puede compilar:

template <typename First, typename ...Args>
std::string type_name () {
    return std::string(typeid(First).name()) + " " + type_name<Args...>();
}
std::string type_name () {
    return "";
}

¿Cómo terminaré la recursión?

Respuestas a la pregunta(4)

Su respuesta a la pregunta