[over.match.ctor]

# 12 Overloading [[over]](./#over)

## 12.2 Overload resolution [[over.match]](over.match#ctor)

### 12.2.2 Candidate functions and argument lists [[over.match.funcs]](over.match.funcs#over.match.ctor)

#### 12.2.2.4 Initialization by constructor [over.match.ctor]

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/overloading.tex#L1036)

When objects of class type are [direct-initialized](dcl.init#def:direct-initialization "9.5 Initializers [dcl.init]"),
copy-initialized from an expression of the same or a
derived class type ([[dcl.init]](dcl.init "9.5 Initializers")),
or [default-initialized](dcl.init#def:default-initialization "9.5 Initializers [dcl.init]"),
overload resolution selects the constructor[.](#1.sentence-1)

For direct-initialization or default-initialization
(including default-initialization in the context of copy-list-initialization),
the candidate functions are
all the constructors of the class of the object being
initialized[.](#1.sentence-2)

Otherwise, the candidate functions are all
the non-explicit constructors ([[class.conv.ctor]](class.conv.ctor "11.4.8.2 Conversion by constructor")) of that
class[.](#1.sentence-3)

The argument list is the[*expression-list*](expr.post.general#nt:expression-list "7.6.1.1 General [expr.post.general]") or [*assignment-expression*](expr.assign#nt:assignment-expression "7.6.19 Assignment and compound assignment operators [expr.assign]") of the [*initializer*](dcl.init.general#nt:initializer "9.5.1 General [dcl.init.general]")[.](#1.sentence-4)

For default-initialization in the context of copy-list-initialization,
if an explicit constructor is chosen, the initialization is ill-formed[.](#1.sentence-5)
