Boost logo

Boost :

From: Joe Gottman (jgottman_at_[hidden])
Date: 2005-12-29 19:21:41


There is an error in the implementation of the converting assignment
operator for optional<T>. It is currently implemented as

template<class U>
optional& operator= ( optional<U> const& rhs )
{
    this->assign(rhs.get());
    return *this ;
}

The problem with this is that if rhs is not initialized then rhs.get()
asserts. This function should be rewritten as

template<class U>
optional& operator= ( optional<U> const& rhs )
{
    if (rhs.is_initialized())
        this->assign(rhs.get());
    else
        destroy();
    return *this ;
}

Joe Gottman


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