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