Boost logo

Boost Users :

Subject: Re: [Boost-users] [range_ex] range_ex conflicts with non_copyable
From: Roman Perepelitsa (roman.perepelitsa_at_[hidden])
Date: 2009-04-06 03:31:27


2009/4/5 Igor R <boost.lists_at_[hidden]>

> > 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.



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net