В условиях, указанных в [dcl.init], как часть инициализации копии объекта типа класса, может быть вызвано определяемое пользователем преобразование для преобразования выражения инициализатора в тип инициализируемого объекта. Разрешение перегрузки используется для выбора вызываемого пользователем преобразования. [ Note: Преобразование, выполняемое для косвенной привязки к ссылке на тип класса, возможно, квалифицированный cv, определяется в терминах соответствующей инициализации копии без ссылки. ] Предполагая, что « » является типом инициализируемого объекта, с типом класса, функции-кандидаты выбираются следующим образом: — end note cv1 TT
converting constructors Из T являются функциями кандидатов.
Когда тип выражения инициализатора является типом класса «cv S», рассматриваются неявные функции преобразования S и его базовые классы. При инициализации временного объекта, который должен быть привязан к первому параметру конструктора, где параметр имеет тип «ссылка на возможно- cvквалифицированный T», а конструктор вызывается с одним аргументом в контексте прямой инициализации объекта типа «cv2 T» , также рассматриваются явные функции преобразования. Те, которые не скрыты внутри S и дают тип, чья cv-неквалифицированная версия является тем же типом, что T и его производный класс, являются функциями-кандидатами. Функции преобразования, которые возвращают «ссылку на X», возвращают lvalue или xvalue, в зависимости от типа ссылки, типа X и поэтому считаются X подходящими для этого процесса выбора функций-кандидатов.