Boost logo

Boost :

From: Powell, Gary (powellg_at_[hidden])
Date: 2004-03-09 16:55:15

No, but just because the standard libraries scr*wed up is no reason to perpetuate the mistake.

It's the rule of unexpected consequences.

circular_buffer<int> x = { 1, 2, 3};
circular_buffer<short> y = { 1, 2 ,3};

x == y ?? or not?

Sure looks like it should work.

The VTL library does it IMO correctly, allowing that if there is an operation
T1 F T2, then

V1 F V2 compiles. Otherwise you just force the user to write what should be library

(Obviously swap can't do this unless the Allocators are the same.)

template<class T1, class T2, class Alloc>
void swap( circular_buffer<T1, Alloc> &lhs, circular_buffer<T2, Alloc> &rhs)
   // do an element by element swap.
   // and insert for the leftover elements.

template<class T1, class Alloc>
void swap<T1, T1, Alloc> ( circular_buffer<T1, Alloc> &lhs, circular_buffer<T1, Alloc> &rhs)
   // swap the whole container.


-----Original Message-----
From: boost-bounces_at_[hidden] [mailto:boost-bounces_at_[hidden]] On Behalf Of Pavel Vozenilek
Sent: Tuesday, March 09, 2004 11:52 AM
To: boost_at_[hidden]
Subject: [boost] Re: Formal Review: Circular Buffer

"Powell, Gary" <powellg_at_[hidden]> wrote

> Shouldn't the comparison functions allow the types to differ?
> circular_buffer<T, MyAlloc> x;
> circular_buffer<S, YourAlloc> y;
> bool b = x == y; for where the operator T == S is valid?
> And what does the allocator have to do with it?
Hmm, do you know a STL implementation/some container
with this feature? It may be often bug to compare containers with
different types.


Unsubscribe & other changes:

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