Quando usar um especificador de tipo elaborado

Existe uma boa razão para escolher usar um especificador de tipo elaborado? Por exemplo, em determinadas circunstâncias, é necessário usar otemplate outypename palavras-chave para desambiguar um dependentetemplate ou digite.

Mas não consigo pensar em nenhum exemplo em que isso ocorreria para algo como uma enumeração. Tome o seguinte exemplo de código:

enum Foo { A,  B };

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

Por que eu escolhi usar a sintaxebaz() fornece maisbar() (ou vice-versa)? Existe algum caso ambíguo?

questionAnswers(4)

yourAnswerToTheQuestion