In a class such as this one: #include <initializer_list> class A { public: A(int i, double d){} A(std::initializer_list<double> l){} }; why an instantiation with curly braces as this one int main() { A a{2,2.} ; } shall default to the initializer list constructor? I understand why a call like "A a{2.,2.}" would default to it, but in my eyes it would make more sense to default to the first constructor when the types match it exactly. -- Julius Witte Mathematical Methods for Simulation (Head: Prof. G. Kanschat) Interdisciplinary Center for Scientific Computing (IWR) Heidelberg University Room 1.235, INF 205, 69120 Heidelberg, Germany Web: http://www.mathsim.eu