$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [Boost-users] [bind][make_shared] compilation failure with ref arg
From: Peter Dimov (pdimov_at_[hidden])
Date: 2010-01-25 09:08:38
Jeff Flinn wrote:
> The last statement below fails to compile with boost 1.39.0 on MSVC 8.
> Am I doing anything obviously wrong? Any help is appreciated.
...
> boost::bind(&boost::make_shared<Y, int&>, boost::ref(i));
Under C++03 compilers, make_shared takes its arguments by const reference:
template<class T, class A1>
shared_ptr<T> make_shared( A1 const & a1 );
MSVC doesn't like the A1=int& case because it forms the questionably valid
"int& const&".
boost::bind(
&boost::make_shared<Y, boost::reference_wrapper<int> >,
boost::ref(i) );
works though. This is what make_shared<Y>( ref(i) ) would instantiate.