¿Por qué usa typedef cuando declara una enumeración en C ++?

No he escrito ningún C ++ en años y ahora estoy tratando de volver a escribirlo. Luego me encontré con esto y pensé en renunciar:

typedef enum TokenType
{
    blah1   = 0x00000000,
    blah2   = 0X01000000,
    blah3   = 0X02000000
} TokenType;

¿Que es esto? Porque es eltypedef palabra clave utilizada aquí? ¿Por qué el nombreTokenType aparecer dos veces en esta declaración? ¿En qué se diferencia la semántica de esto?

enum TokenType
{
    blah1 = 0x00000000,
    blah2=0x01000000,
    blah3=0x02000000
};

Respuestas a la pregunta(8)

Su respuesta a la pregunta