
On Wed, 16 Feb 2005 15:29:37 +0200 "Peter Dimov" <pdimov@mmltd.net> wrote:
No, he isn't assuming that. "Not exception safe" == "does not provide basic" in the above paragraph. Fernando's goal, IIUC, was to make optional<T>::operator= provide the basic guarantee even when T::operator= does not. We are arguing that this is not necessary and that optional<T>::operator= should just mirror the exception safety guarantee of T::operator= and T::T( T const & ).
That is how I read it as well, and I also agree that providing more exception safety than T is unwarranted for Boost.Optional. Why should the "optional" nature of T make it more exception safe than using T by itself? The only thing I can think of specific to Boost.Optional is when T is destroyed so that the "optional" nature is "cleared." However, ~T() throws then the programmer has more then enough other problems...