
On 1/29/13 1:40 AM, Paul Smith wrote:
I am also
not convinced that drawing from objects with "singular" values is wrong, regardless if it's a pointer or not. I think it is you who's missing the point because Iterators are likewise*not* pointers.
Okay, so replace "recursive_wrappers are not pointers" with "recursive_wrappers are not iterators". How does it make it any different? A singular value still doesn't fit in.
The point is that iterators can have singular values. If iterators can have them, why can't any other object (have them)? IMO, ultimately, it's a matter of design. You may not agree with a recursive_wrapper being in a "singular" state after move, but that's just your preference. IMO, it's necessary for proxy-like objects that own and hold their subjects by pointer. It's not quite elegant, sure, but C++ is never elegant in many respects for the sake of high performance. I'd trade this quirk for the sake of efficiency any day. Regards, -- Joel de Guzman http://www.boostpro.com http://boost-spirit.com