
29 Dec
2005
29 Dec
'05
5:21 p.m.
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