Если класс имеет объявленного пользователями конструктора, который берет параметр станд. типа:: initializer_list, затем это должен быть единственный конструктор кроме специальных конструкторов функции членства
Если класс имеет объявленного пользователями конструктора, который берет параметр станд. типа:: initializer_list, затем это должен быть единственный конструктор кроме специальных конструкторов функции членства.
Если класс содержит конструктора, который берет параметр типа std::initializer_list
и другой конструктор параметрами, заключенные в фигурные скобки инициализации, такие как:
classType obj {0,1}
std::initializer_list
параметр, но разработчики может ожидать в противном случае.Средство проверки отмечает определения классов, которые содержат конструктора, первый параметр которого имеет тип std::initializer_list
и также содержит другого конструктора (исключая специальных конструкторов функции членства). Нарушение правила сопровождается событиями, которые указывают на местоположение других конструкторов, которые могут привести к беспорядку с std::initializer_list
конструктор.
Определение класса с std::initializer_list
- у конструктора параметра, который не нарушает это правило, есть только значение по умолчанию, копия и конструкторы перемещения (и копия и операторы присваивания перемещения). Если вы не можете избежать второго конструктора параметрами, можно выровнять по ширине это нарушение правила. В этом случае, для инициализации списком, используйте синтаксис, такой как:
classType obj ({0,1})
std::initializer_list
- конструктор параметра вызывается. Для инициализации другими конструкторами используйте синтаксис, такой как:classType obj (0,1)
()
, но позволяет такие инициализации для классов с соединением std::initializer_list
- конструктор параметра и другие конструкторы.Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
Группа: операторы объявления |
Категория: консультация, автоматизированная |