Is there a particularly good reason to choose to use an elaborated type specifier? For example, in certain circumstances, one is required to use the template
or
Elaborated type specifiers are required for declaring user-defined types. One use case is to forward declare your types. In the unlikely event that you have a function with the same name as an enum
you have visible in scope you may need to use the elaborated type specifier in the function declaration:
enum A { A_START = 0 };
void A(enum A a) {}
int main() {
enum A a;
A( a );
}