Посмотрите на следующие коды:
class Foo
{
public:
Foo(){}
explicit Foo(const Foo &){}
};
int main()
{
Foo foo1;
Foo foo2(foo1);
Foo foo3 = foo1; //can not compile
return 0;
}
Почему Foo foo3 = foo1;
не может скомпилироваться, и в чем разница между двумя вызовами конструктора копирования?
PS: мои инструменты компилятора GCC4.8.2