Если класс имеет объявленный пользователем конструктор, который принимает параметр типа std::initializer_list, то он должен быть единственным конструктором, кроме конструкторов специальных функций-членов
Если класс имеет объявленный пользователем конструктор, который принимает параметр типа std::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-конструктор параметров и другие конструкторы.Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.
| Группа: Деклараторы |
| Категория: Консультации, Автоматизированные |