16 Overloading [over]

16.3 Overload resolution [over.match]

16.3.1 Candidate functions and argument lists [over.match.funcs]

16.3.1.5 Initialization by conversion function [over.match.conv]

В условиях, указанных в [dcl.init], как часть инициализации объекта неклассового типа, функция преобразования может быть вызвана для преобразования выражения инициализатора типа класса в тип инициализируемого объекта. Разрешение перегрузки используется для выбора вызываемой функции преобразования. Предполагая, что «cv1 T» - это тип инициализируемого объекта, а «cv S» - это тип выражения инициализатора, с S типом класса функции-кандидаты выбираются следующим образом:

  • Рассмотрены функции преобразования S и его базовые классы. Те неявные функции преобразования, которые не скрыты внутри S и дают тип T или тип, который может быть преобразован в тип с T помощью a, standard conversion sequence являются функциями-кандидатами. Для прямой инициализации те явные функции преобразования, которые не скрыты внутри S и дают тип T или тип, который может быть преобразован в тип T с помощью a qualification conversion , также являются функциями-кандидатами. Считается, что функции преобразования, возвращающие тип с квалификацией cv, дают неквалифицированную версию этого типа для этого процесса выбора функций-кандидатов. Функции преобразования, которые возвращают «ссылку на cv2 X», возвращают значения l или x, в зависимости от типа ссылки, типа «cv2 X» и, следовательно, считаются X подходящими для этого процесса выбора функций-кандидатов.

Список аргументов имеет один аргумент, который является выражением инициализатора. [ Note: Этот аргумент будет сравниваться с неявным параметром объекта функций преобразования. ]end note