
Joel de Guzman <joel@boost-consulting.com> writes:
To me it's like, generalizing that something with a wing, a propeller, and all things that comprise an airplane-- is an airplane. No, not necessarily. The presence of these elements do not complete the picture. It can be, say, *just a collection of parts*. Hence, pair<iterator,iterator> is just a collection of 2 iterators, nothing more.
External, non-intrusive, adaptation of a 3rd party type to make it model a particular concept that it doesn't model "inherently" is a fundamental generic programming maneuver. I don't see anything particularly wrong with making a pair of iterators model Range. Jeremy Siek has described cases to me wherein one type can play two different roles with the *same* library. For that you need two different concept maps, to map the type into its different roles. Thus his recent "scoped concept_map" proposal.
All that being said, I don't care too much either way. It's not a concern of Fusion, AFAICT. Unless, you are asking for std::pair to be removed from the list of supported Fusion sequences?
Nope. Just raising the point for discussion. -- Dave Abrahams Boost Consulting www.boost-consulting.com