"William E. Kempf" <[EMAIL PROTECTED]> writes:

> Tanton Gibbs said:
>>> optional<int> opt0(1);
>>> optional<int> opt1(2);
>>> (opt0 == opt1) // true
>>
>> I would not have any problem with this returning false.  In the normal
>> ptr world:
>> char c, d;
>> char* p, *q;
>> p = &c;
>> q = &d;
>>
>> if( p == q ) // false
>>
>> People expect it to compare memory locations, not initialization status.
>> Therefore, I would have no problem with operator== returning true only
>> if both
>> were uninitialized.
>
> I agree with this.  The optional<> concept takes some type and extends
> it's possible values to include a new "uninitialized" value.  It seems
> wholly logical to me for this:
>
> optional<int> a();
> optional<int> b();
> optional<int> c(1);
> optional<int> d(2);
> optional<int> e(2);
>
> assert(a == b);  // both uninitialized
> assert(a != c);  // one uninitialized
> assert(c != d);  // both initialized to different values
> assert(d == 3);  // both initialized to same value
"2?"----------^ 

BTW, that's a container-like interface. I have no problem with that,
but then I'm a bit concerned about the pointer-like interface to the
rest of the class.

-- 
                       David Abrahams
   [EMAIL PROTECTED] * http://www.boost-consulting.com
Boost support, enhancements, training, and commercial distribution

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to