The standard way of declaring an enum in C++ seems to be:

enum <identifier> { <list_of_elements> };

However, I have already seen some declarations like:

typedef enum { <list_of_elements> } <identifier>;

What is the difference between them, if it exists? Which one is correct?

Edit
Report