
David Abrahams wrote:
Larry Evans <cppljevans@cox-internet.com> 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