[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)