Boost logo

Boost :

Subject: Re: [boost] [optional] Safe optional
From: Vladimir Batov (Vladimir.Batov_at_[hidden])
Date: 2014-11-19 17:57:07

On 11/20/2014 09:12 AM, Vicente J. Botet Escriba wrote:
> Le 19/11/14 22:36, Vladimir Batov a écrit :
>> ...
>> On the second thought I might probably agree that op<() might be
>> questionable... Can we address that differently then? Say,
>> bool operator<(T const&, optional<T> const&) { BOOST_STATIC_ASSERT(); }
> I don't think this is a solution. User defining its own function
> void f(optional<T>, optional<T>);
> would need to add the following?
> void f(T, optional<T>) { BOOST_STATIC_ASSERT(); }
> void f(optional<T>, T) { BOOST_STATIC_ASSERT(); }
> What if there are 3 optional parameters? We can not say to the user
> that they need to program this way.

That's immensely different... and it should not be prohibited... T to
optional<T> is natural propagation/conversion... as 'int' to 'double'.
That should happen automatically and seamlessly... as 'int' to 'double'.
In the other direction -- optional<T> to T -- like double to int, needs
to be explicit... and it is.

Boost list run by bdawes at, gregod at, cpdaniel at, john at