Boost logo

Boost Users :

Subject: Re: [Boost-users] boost bind, issue moving from 1.57 to 1.60
From: Gavin Lambert (gavinl_at_[hidden])
Date: 2016-06-16 19:29:48


On 17/06/2016 09:39, Jason Mancini wrote:
> So this snippet comes from a sizable code base. Took a long time to
> pinpoint then distill the issue down to the 6-line example! Pretty sure
> that std::bind / std::function don't support this usage, or at least it
> didn't work when I tried for a few minutes. Boost flavor seems a bit
> more featured.

Yeah, boost::bind supports quite a few late-binding operators, which are
handy to improve code brevity but can be a bit confusing to read. If
you're using a C++11 compiler then it's probably better to use lambdas
for these cases now.

> The actual offender is the bigger change in bind/bind.hpp from 1.59 to
> 1.60 (not the trivial changes in args or placeholder). I can see they
> added significant std::forward / rvalue support. If I set
> BOOST_NO_CXX11_RVALUE_REFERENCES then also it continues to work. I
> suspect we've hit a corner case issue with forward / rvalue and
> boost::function / boost::shared_ptr.

Most likely, somewhere along the way it's moving the pointer and then
returning the original instead of the new one.


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