Andrzej, On 11/18/2014 08:23 PM, Andrzej Krzemienski wrote:
... And to remove operator* and get() and value() and get_pointer() - anything that could cause UB. And remove implicit conversion from T
1. I might be open to the idea of unifying/cleaning the access interface and settling on one... but taking them *all* out?.. Or you want to keep operator->()? Then, I still can do optional<T> ot; T* t = ot.operator->(); You might say, it's crazy. My point is that if you want to save me (the user) from myself with "safe optional", you are most likely wasting your effort -- an uneducated idiot will always find a way to hurt himself. 2. I find it troubling that you keep bringing "remove implicit conversion from T " up. That indicates that the property is close to the top of your "grievances" list. On my side, I find that implicit conversion essential for sane interactions of users with "optional". Back a while, when we were discussing "optional" (was it ISO forum?), I remember Fernando Cacciola expressing the same opinion (and as strongly). I'd greatly appreciate if you could please provide practical usage/deployment examples where implicit conversion from T causes a problem.
In that case why not add it to the regular optional?
IMHO, in order to introduce an alternative component, there should be significant and incompatible design and interface differences between the two. So far I don't see the need for such differences.
As explained above: serious backwards incompatibility. Unacceptable by many, including myself.
I have to admit I find it somewhat of a concern hearing from the "optional" maintainer and someone leading "optional" for standardization that he does not seem to share/agree with the current "optional" design to the point where you are keen on forking a "seriously incompatible" variant. Going ahead with the latter will be a lot of effort implementing, promoting, educating, defending... IMO that'll be the effort 1) not necessarily successful; 2) fragmenting the user-base; 3) most importantly, it'll be the effort taken *away* from the current "optional"... which seems so close (hopefully) to standardization. If you have concerns (you would not initiate the conversation if you did not), let's discuss them within the "optional" boundaries and document/justify the decisions made. Do I worry too much?