|
Boost Users : |
Subject: Re: [Boost-users] [range_ex] range_ex conflicts with non_copyable
From: Thorsten Ottosen (thorsten.ottosen_at_[hidden])
Date: 2009-04-05 16:52:38
041021042 skrev:
> Hiï¼
>
> The following code works well with old version of range_ex (Dec 2008), but when I update range_ex to an newer version (after Feb 2009), the code cannot compile.
>
> code:
> #include <boost/range/algorithm.hpp>
> #include <boost/ptr_container/ptr_vector.hpp>
>
> 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 &)'
>
Perhaps the argument of find() is taken by value? I guess we should use
const T& here.
-Thorsten
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