On 11/26/2014 02:33 PM, Edward Diener wrote:
On 11/25/2014 10:20 PM, Matt Calabrese wrote:
On Tue, Nov 25, 2014 at 5:27 PM, Edward Diener
wrote: On 11/25/2014 7:18 PM, Vicente J. Botet Escriba wrote:
Following your reasoning, I will suggest to remove the implicit construction from T to optional<T> and/or remove the operator<(optional<T>, optional<>). If we can not live without them, we could always try to do whatever is better.
I do not understand why anyone feels that the less than operator for boost::optional<T> is wrong.
I can MAYBE see not having them as long as std::less and family are still specialized accordingly (specializing std::less is [correctly, IMO] in for the proposed standard optional now anyway, thanks to Tony Van Eerd). Ultimately, though, I really don't think there's a problem with also having the operators overloaded. I simply don't buy the "gotchas."
If the C++ standard says that associative container of std::optionals is fine but some programmers believe that manually comparing them via the less than operator is not fine, I think we have a real conceptual problem here, even outside of the mere non-orthogonality of the situation.
The discussion is not about op<(optional<T>, optional<T>) but rather op<(T, optional<T>)