Por que a inicialização uniforme (inicialização com chaves) é recomendada?

Eu vejo muitos lugares diferentes em que a inicialização uniforme érecomendado. Herb Sutterrecomenda e fornece uma lista quandonão para usá-lo. Parece que o consenso geral é usar essa sintaxe.

No entanto, não vejo o porquê. Tem o problema destd::initializer_list tem precedência. Adicionando umstd::initializer_list para uma classe pode quebrar o código. Com modelos, não é recomendável usar. Parece ter mais exceções do que a maneira "antiga". Nenhum desses problemas existia à maneira antiga.

Não vejo por que a inicialização uniforme é superior. Minha conclusão é continuar usando() sintaxe e use{} só no caso de quando eu quero chamar um construtor comstd::initializer_list.

Por quê? O que a inicialização uniforme fornece?

proíbe o estreitamento: boa característica. Mas, como tenho avisos estreitos, ligue paratudo meu código (porque eu quero conhecer todas as limitações do meu código, não apenas nas inicializações), não preciso muito desse recurso.análise mais irritante: sim, isso é um problema, mas eu acertei isso muito, muito raramente. Portanto, não é uma razão (para mim) mudar. Isso coloca, eu posso usar{}.existe mais alguma coisa (talvez eu ainda esteja aprendendo novos recursos do C ++)?

Com a maneira "antiga", não havia regras para lembrar, nem quebra de código possível. Basta usá-lo e, às vezes, muito, muito raramente, você obtém a análise mais irritante. Isso é tudo.

Meu pensamento está errado em algum lugar?

questionAnswers(1)

yourAnswerToTheQuestion