[over.match.conv] # 12 Overloading [[over]](./#over) ## 12.2 Overload resolution [[over.match]](over.match#conv) ### 12.2.2 Candidate functions and argument lists [[over.match.funcs]](over.match.funcs#over.match.conv) #### 12.2.2.6 Initialization by conversion function [over.match.conv] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/overloading.tex#L1110) Under the conditions specified in [[dcl.init]](dcl.init "9.5 Initializers"), as part of an initialization of an object of non-class type, a conversion function can be invoked to convert an initializer expression of class type to the type of the object being initialized[.](#1.sentence-1) Overload resolution is used to select the conversion function to be invoked[.](#1.sentence-2) Assuming that “cv T” is the type of the object being initialized, the candidate functions are selected as follows: - [(1.1)](#1.1) The permissible types for non-explicit conversion functions are those that can be converted to type T via a standard conversion sequence ([[over.ics.scs]](over.ics.scs "12.2.4.2.2 Standard conversion sequences"))[.](#1.sentence-3) For direct-initialization, the permissible types for explicit conversion functions are those that can be converted to type T with a (possibly trivial) qualification conversion ([[conv.qual]](conv.qual "7.3.6 Qualification conversions")); otherwise there are none[.](#1.1.sentence-2) [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/overloading.tex#L1133) The argument list has one argument, which is the initializer expression[.](#2.sentence-1) [*Note [1](#note-1)*: This argument will be compared against the object parameter of the conversion functions[.](#2.sentence-2) — *end note*]