|
Boost : |
From: David Abrahams (dave_at_[hidden])
Date: 2005-03-01 10:43:02
"Fernando Cacciola" <fernando_cacciola_at_[hidden]> writes:
> This is not the way assignment of reference types work in C++:
>
> ra = rb ; // The value of 'a' referenced by 'ra' is changed, not the
> reference itself.
> cout << a ; Prints 789
>
> This error in the way optional<T&> treated assignment of reference types was
> pointed out by Joel de Guzman long ago when he started using Optional in
> Spirit. However, at the time, Joel explicitely asked me not to change this
> and keep the current rebinding semantics in order to minimize any impact in
> Spitit itself (which certainly has, o had, a much larger user base).
>
> If I change the code now to use T's operator=(), assignment of optional<T&>
> will have a _radically_ different semantics. A correct one, that's for sure,
> but end user code might be fundamentally impacted.
You might want to consider whether it makes sense to change the
semantics only for non-reference types.
-- Dave Abrahams Boost Consulting www.boost-consulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk