Opened 3 years ago

Last modified 3 years ago

#11702 new Bugs

boost::bind universal reference handling regression

Reported by: maxim.yegorushkin@… Owned by: Peter Dimov
Milestone: To Be Determined Component: bind
Version: Boost 1.59.0 Severity: Regression
Keywords: bind, auto_ptr Cc:


The following code compiles with boost-1.57 but not with boost-1.59:

#include <boost/function.hpp>
#include <boost/bind.hpp>
#include <memory>

void foo(std::auto_ptr<int>);

int main() {
    boost::function<void(std::auto_ptr<int>)> f = boost::bind(foo, _1);
    std::auto_ptr<int> p;

This is due to the new universal reference handling code implemented in boost::bind.

The local fix we use is:


namespace boost { namespace _bi {

template<class A> struct list_add_cref<std::auto_ptr<A> >
    typedef std::auto_ptr<A>& type;

} }


Change History (1)

Note: See TracTickets for help on using tickets.