#include <iostream>
using namespace std;
namespace Your{
struct Foo{
int i = 5;
Foo(){}
Foo(Foo &foo){
i = foo.i;
}
};
}
namespace Mine{
struct Foo{
int i = 5;
Foo(){}
Foo(const Foo &foo){
i = foo.i;
}
};
}
int main(){
{const Mine::Foo foo, copiedFoo(foo);}
{const Your::Foo foo, copiedFoo(foo);}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbmFtZXNwYWNlIFlvdXJ7CglzdHJ1Y3QgRm9vewoJCWludCBpID0gNTsKCQlGb28oKXt9CgkJRm9vKEZvbyAmZm9vKXsKCQkJaSA9IGZvby5pOwoJCX0KCX07Cn0KCm5hbWVzcGFjZSBNaW5lewoJc3RydWN0IEZvb3sKCQlpbnQgaSA9IDU7CgkJRm9vKCl7fQoJCUZvbyhjb25zdCBGb28gJmZvbyl7CgkJCWkgPSBmb28uaTsKCQl9Cgl9Owp9CgoKaW50IG1haW4oKXsKCXtjb25zdCBNaW5lOjpGb28gZm9vLCBjb3BpZWRGb28oZm9vKTt9Cgl7Y29uc3QgWW91cjo6Rm9vIGZvbywgY29waWVkRm9vKGZvbyk7fQoJcmV0dXJuIDA7Cn0=
prog.cpp: In function 'int main()':
prog.cpp:27:37: error: no matching function for call to 'Your::Foo::Foo(const Your::Foo&)'
{const Your::Foo foo, copiedFoo(foo);}
^
prog.cpp:27:37: note: candidates are:
prog.cpp:8:3: note: Your::Foo::Foo(Your::Foo&)
Foo(Foo &foo){
^
prog.cpp:8:3: note: no known conversion for argument 1 from 'const Your::Foo' to 'Your::Foo&'
prog.cpp:7:3: note: Your::Foo::Foo()
Foo(){}
^
prog.cpp:7:3: note: candidate expects 0 arguments, 1 provided