$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: [boost] [multiindex] internal scope_guard has changed access from public to protected
From: Thorsten Ottosen (nesotto_at_[hidden])
Date: 2010-04-23 08:36:23
Hi JoaquÃn,
I'm using the scope_guard from multi_index/detail/scope_guard.hpp.
It seems like a revision has made the destructor and copy-constructor
protected instead of private. This is in some sense more idiomatic, but
it breaks a use that I have in my upcomming auto_buffer class. Basically
I'm only constructing a scope_guard object when I know the code can
throw, otherwise I construct a "null" scope_guard which is simply
an instance of scope_guard_impl_base.
Here's the code:
namespace auto_buffer_detail
{
typedef boost::multi_index::detail::scope_guard_impl_base
null_guard;
}
#define BOOST_AUTO_BUFFER_CONSTRUCTOR_SCOPE_GUARD() \
boost::has_nothrow_copy<T>::value ?
boost::auto_buffer_detail::null_guard() : \
boost::multi_index::detail::make_obj_guard(
*this, \
&auto_buffer::deallocate, \
buffer_, members_.capacity_ )
and use it like so:
boost::multi_index::detail::scope_guard guard =
BOOST_AUTO_BUFFER_CONSTRUCTOR_SCOPE_GUARD();
...
guard.dismiss();
Any chance you make the two members public again?
-Thorsten