
From: Domagoj Saric <domagoj.saric@littleendian.com>
Maybe I'm missing something, but I don't see the justification.
IMO it seems that, yes, you are making the same mistake as Lucanus, thinking about "The Universe" only as/through your POV of your personal problem domain: a) (optional models optionally holding an object) + (objects can be held by value and by reference) = optional<T&> perfectly logical I'm really not. Give me a use case. Do they make sense being passed as parameters/returns? Do they make sense being stored?
I just see some corner case of optional being turned into a replacement for regular pointer. Why not just make dumb_ptr<T>? If you want you can make it streamable and give it clean construction. What is it you really want from optional<T&>? Does anyone use it a lot? Is it like std::vector<bool>?
b) creating special cases (e.g. for T&) creates special problems in generic code My point exactly. I'd make it work for completeness but not bother to optimize.
Chris