#include <iostream>
#include<map>
#include<string>
#include<vector>
using namespace std;
class Y
{
public:
Y(int) { cout << "Y\n"; }
};
class X
{
public:
X(int, const Y&) { cout << "int, const Y&\n"; }
X(int) { cout << "X\n"; }//removed explicit from here and we get ambiguity error
X(int, X&&) { cout << "int, X&&\n"; }
X(const X&) { cout << "copy\n"; }
X(int, int, const Y&) { cout << "int, int, const Y&\n"; }
};
int main()
{
X x1(1, 2); // OK
}