
30 Dec
2005
30 Dec
'05
12:21 a.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