Cuándo usar un especificador de tipo elaborado

¿Hay alguna razón particularmente buena para elegir utilizar un especificador de tipo elaborado? Por ejemplo, en ciertas circunstancias, se requiere que uno use eltemplate otypename Palabras clave para desambiguar a un dependiente.template o tipo

Pero no puedo pensar en ningún ejemplo en el que esto ocurra para algo como una enumeración. Tomemos el siguiente ejemplo de código:

enum Foo { A,  B };

void bar(Foo foo);
void baz(enum Foo foo);

¿Por qué podría elegir utilizar la sintaxis?baz() proporciona másbar() (o viceversa)? ¿Hay algún caso ambiguo?

Respuestas a la pregunta(4)

Su respuesta a la pregunta