Entre o padrão C++98 e o padrão C++03 , foi feita uma mudança interessante:
struct S {
int S;
};
Este código é válido em C++03 e versões mais recentes, mas estava mal formado em C++98. Especificamente, o [class.mem] parágrafo 13 proibiu todos os membros de dados de terem o mesmo nome da classe em C++98, mas esta regra foi flexibilizada para que, se não houver um construtor declarado pelo usuário, você possa ter um construtor não estático membro de dados com o mesmo nome.
Qual é a motivação por trás disso? Que caso de uso importante é coberto por isso que justificaria a revisão do padrão?