David Abrahams said:
> "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?"----------^

Actually, "e"... the keys were close enough together for my small fingers
to smash the wrong one ;).

William E. Kempf



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

Reply via email to