Boost logo

Boost :

From: Philippe A. Bouchard (philippeb_at_[hidden])
Date: 2003-02-24 11:32:47


David Abrahams wrote:

[...]

>> 2) Placement operator new (size_t, boost::optional<T> &) definition
>> which I highly suggest.
>
> Your response is a bit too terse for me to understand. Care to
> clarify a bit?

Maybe the following placement operator new can help prevent copy constructor
usages:
#include <new>

template <typename T>
    class optional
    {
        friend void * operator new (size_t, optional<T> &);

        ...
    };

template <typename T>
    inline void * operator new (size_t a_s, boost::optional<T> & a_o)
    {
        a_o.m_initialized = true;
        return operator new (a_s, a_o.get());
    }

Example:
optional<int> i;

new (i) int(17);

Philippe A. Bouchard


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk