Когда объекты неагрегированного типа класса T инициализируются списком, что [dcl.init.list] указывает, что разрешение перегрузки выполняется в соответствии с правилами в этом разделе, разрешение перегрузки выбирает конструктор в два этапа:
Первоначально функции-кандидаты являются конструкторами списка инициализаторов ([dcl.init.list]) класса, T а список аргументов состоит из списка инициализаторов в виде единственного аргумента.
Если жизнеспособный конструктор списка инициализаторов не найден, снова выполняется разрешение перегрузки, где все функции-кандидаты являются конструкторами класса, T а список аргументов состоит из элементов списка инициализаторов.
Если список инициализаторов не имеет элементов и T имеет конструктор по умолчанию, первая фаза опускается. При инициализации списка копирования, если explicit выбран конструктор, инициализация имеет неправильный формат . [ Note: Это отличается от других ситуаций ([over.match.ctor], [over.match.copy]), где для инициализации копирования рассматриваются только конструкторы преобразования. Это ограничение применяется только в том случае, если эта инициализация является частью окончательного результата разрешения перегрузки. ] — end note