modelo variadic recursivo para imprimir o conteúdo de um pacote de parâmetros

Como é possível criar um modelo variadic recursivo para imprimir o conteúdo de um pacote de paramater? Estou tentando com isso, mas ele não consegue compilar:

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

Como devo terminar a recursão?

questionAnswers(4)

yourAnswerToTheQuestion