Explicit constructor taking multiple arguments
Up until C++11, yeah, no reason to use explicit on a multi-arg constructor. That changes in C++11, because of initializer lists. Basically, copy-initialization (but not direct initialization) with an initializer list requires that the constructor not be marked explicit. Example: struct Foo { Foo(int, int); }; struct Bar { explicit Bar(int, int); }; Foo f1(1, … Read more