[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*]
