Ошибка, когда есть частная копия 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();
}

Ответы на вопрос(6)

Ваш ответ на вопрос