explicit non-single parameter constructor

c++, constructor, explicit, explicit-constructor

Solution

In C++03, and in this particular case, it makes no sense for a two parameter constructor to be marked `explicit`. But it could make sense here:

explicit X(int i, int j=42);

So, marking a two parameter constructor with `explicit` does not have to be an error.

In C++11, this use of explicit would prevent you from doing this:

X x = {1,2};

Problem

Can anyone explain why does non-single parameter constructor marked as explicit compile? As far as I understand this is absolutely useless keyword here, so why does this compile without error? ``` class X { public: explicit X(int a, int b) { /* ... */} }; ```

Original source

Related problems