2009/4/5 Igor R <boost.lists@gmail.com>
> struct A : boost::noncopyable {
>    int a;
>    A(int _a) : a(_a) {}
>    bool operator == (const A& r) const { return a == r.a; }
> };
>
> int main()
> {
>    boost::ptr_vector<A> pva;
>    A a(0);
>    std::find(pva.begin(), pva.end(), a);  // ok
>    boost::find(pva, a);   // cause an error
> }
>
> compiler: msvc2008
>
> error message:
> e:\zxg\boost\range_ex\range.cpp(8) : error C2248: 'boost::noncopyable_::noncopyable::noncopyable' : cannot access private member declared in class 'boost::noncopyable_::noncopyable'
>        d:\software\boost_1_37_0\boost\noncopyable.hpp(27) : see declaration of 'boost::noncopyable_::noncopyable::noncopyable'
>        d:\software\boost_1_37_0\boost\noncopyable.hpp(22) : see declaration of 'boost::noncopyable_::noncopyable'
>        This diagnostic occurred in the compiler generated function 'A::A(const A &)'

What's the benefit of providing assignment operator but blocking the
copy-constructor?

There is no assignment operator in the provided code snippet.

Roman Perepelitsa.