@geza Вот такой вот совет, наверное. Я склонен читать такой совет как имеющий в виду «если у вас нет причин не делать этого». Часто я думаю, что люди осторожны с явным включением этих оговорок на случай, если новый программист может использовать эту логику для списания полезной функции. Кроме того, особенно для такого языка, как C ++, я думаю, что люди склонны отдавать предпочтение функциям, которые позволяют компилятору выполнять дополнительную работу за вас, и верят, что вы узнаете, что на самом деле означает ошибка, прежде чем продолжить, и посчитаете ее чистой выгодой в этом свете.

у много разных мест, где одинаковая инициализациярекомендуемые, Херб Саттеррекомендует это, и дает список, когдане использовать это. Кажется, что общее согласие состоит в том, чтобы использовать этот синтаксис.

Однако я не понимаю, почему. Это проблемаstd::initializer_list имеет приоритет. Добавлениеstd::initializer_list к классу может сломать код. С шаблонами использовать не рекомендуется. Кажется, есть больше исключений, чем «старый» способ. Ни одна из этих проблем не существовала по старинке.

Я не понимаю, почему равномерная инициализация лучше. Мой вывод заключается в том, чтобы продолжать использовать() синтаксис и использование{} только в случае, когда я хочу вызвать конструктор сstd::initializer_list.

Почему? Что дает равномерная инициализация?

запрещает сужение: хорошая особенность. Но, так как у меня сужаются предупреждения, включите длявсе мой код (потому что я хочу знать все сужения в моем коде, а не только при инициализации), мне не нужна эта функция слишком много.самый неприятный анализ: да, это проблема, но я сталкиваюсь с этим очень-очень редко. Так что это не повод (для меня) переключаться. Это места, я могу использовать{}.Есть ли что-нибудь еще (может быть, я все еще изучаю новые функции C ++)?

При «старом» способе не было никаких правил для запоминания, никакого возможного взлома кода. Просто используйте его, и иногда, очень-очень редко, вы попадаете в самый неприятный анализ. Вот и все.

Мое мышление где-то неправильно?

Ответы на вопрос(1)

Ваш ответ на вопрос