I wrote c++17 code below :
class Myclass{
public:
Myclass()
{
std::cout << "ctor\n";
}
Myclass(const Myclass&)
{
std::cout << "copy ctor\n";
}
Myclass(Myclass&&)
{
std::cout << "move ctor\n";
}
int x;
};
void foo(Myclass mc)
{
std::cout << "void foo(Myclass mc)\n";
}
void foo(Myclass&& mcrr)
{
std::cout << "void foo(Myclass&& mcrr)\n";
}
int main()
{
foo(Myclass{});
}
But, I was given "call of overloaded foo(Myclass) is ambiguous" error. What is problem? I expected that second function will be called.