Boost logo

Boost Users :

Subject: Re: [Boost-users] [Interprocess] shared_ptr in a non-throwing mode
From: Ion Gaztañaga (igaztanaga_at_[hidden])
Date: 2011-04-09 04:41:11

El 06/04/2011 13:19, Pietro Versari escribió:
> Hi Ion (and everyone else),
> I'm a newbye and I have only one simple question:
> how can I construct a shared_ptr in a non-throwing mode?
> This example throw if there is enough space for MyType but isn't
> enough for my_shared_ptr:
> typedef managed_shared_ptr<MyType,managed_shared_memory>::type
> my_shared_ptr;
> my_shared_ptr sh_ptr = make_managed_shared_ptr(
> segment.construct<MyType>("object to share", std::nothrow)(), segment);

Reviewing again the code, it is not a bug. make_managed_shared_ptr
creates a shared ptr from the object but it must allocate new memory for
the reference count. So it can throw. What is missing is a new
make_managed_shared_ptr() that also is nothrow. I will add it for Boost

my_shared_ptr sh_ptr = make_managed_shared_ptr
  ( segment.construct<MyType>("object to share", std::nothrow)()
  , segment
  , std::nothrow);



Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at