Boost logo

Boost :

From: Joel de Guzman (joel_at_[hidden])
Date: 2006-05-11 01:48:33


David Abrahams wrote:
> Larry Evans <cppljevans_at_[hidden]> writes:

>> The operator== applied to std::vector<I>::iterator and
>> std::vector<I>::iterator would probably compare an I* with an I*
>> and not use:
>>
>> is_same< std::vector<I>::iterator, std::vector<I>::iterator>::value
>
> Yes, STL has iterators whose position can only be measured at runtime.
> Fusion has iterators whose position can be measured at compile-time.
> But -- not to put too fine a point on it -- so what?

Larry, in Fusion, the type of the iterator actually encodes its
position. Unlike STL, where the *type* of c.begin() is the same
as c.begin()++ or even c.end(), In Fusion, like in MPL, the
iterators, from begin to end, all have different types. IOTW,
Fusion iterators are polymorphic. It changes as you traverse the
sequence. The type of begin(s) is not the same as next(begin(s)),
for example.

Regards,

-- 
Joel de Guzman
http://www.boost-consulting.com
http://spirit.sf.net

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk