Ошибка, когда есть частная копия ctor с открытым оператором присваивания
Кто-нибудь из вас может объяснить, почему следующий фрагмент кода не компилируется?
#include
using namespace std;
class Foo
{
public:
Foo() { cout < "Foo::Foo()" < endl < endl; }
Foo& operator=(const Foo&) { cout < "Foo::operator=(const Foo&)" < endl < endl; }
private:
Foo(const Foo& b) { *this = b; cout < "Foo::Foo(const Foo&)" < endl < endl; }
};
int main()
{
Foo foo;
foo = Foo();
}