--- optional.hpp 2007-10-02 11:39:09.000000000 +0800 +++ optional.hpp 2007-10-23 18:08:06.000000000 +0800 @@ -550,7 +550,7 @@ // (NOTE: On BCB, this operator is not actually called and left is left UNMODIFIED in case of a throw) optional& operator= ( optional const& rhs ) { - this->assign( rhs ) ; + this->assign( static_cast(rhs) ) ; return *this ; }