¿Cómo interpretar este tipo de C ++?

Hoy estaba ayudando a seguir el código incorrecto (func fue declarado conint param, peroint* fue pasado como segundo parámetro astd::thread constructor):

#include <thread>

void func(int);
int* ptr;

void start()
{
    std::thread t = std::thread(func, ptr);
}

Cuando intenté compilar esto con gcc 5.3.0, imprimió un mensaje de error con el siguiente tipo:

class std::result_of<void (*(int*))(int)>

Ahora me pregunto cómo interpretar el tipo pasado como parámetro aclass std::result_of<>. Es similar al puntero para funcionar (en este casovoid(*)(int)), pero con extra(int*) después de la estrella entre paréntesis. ¿Cómo interpretar este tipo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta