Desreferenciación del puntero vacío en C ++

Estoy tratando de implementar una lista enlazada genérica. La estructura para el nodo es la siguiente:

typedef struct node{
        void *data;
        node *next;      
};

Ahora, cuando intento asignar una dirección a los datos, supongamos, por ejemplo, un int, como -

int n1=6;
node *temp;
temp = (node*)malloc(sizeof(node));
temp->data=&n1;

¿Cómo puedo obtener el valor de n1 desde el nodo? Si yo digo -

cout<<(*(temp->data));

Yo obtengo -

`void*' is not a pointer-to-object type 

¿El puntero de void no se tipifica para el tipo de puntero int cuando le asigno una dirección de int?

Respuestas a la pregunta(4)

Su respuesta a la pregunta