
"David Abrahams" <dave@boost-consulting.com> wrote in message news:uhdqfqq3e.fsf@boost-consulting.com... | Thorsten Ottosen <nesotto@cs.auc.dk> writes: | > | No, you have to say boost::range::begin(col). Otherwise they could | > | make a.begin() valid but begin(a) invalid, and that would break | > | boost::range::begin. | > | > I don't like this circular dependency on the concepts: Range has a special meaning | > if the argument is a Collection | | ?? special meaning ?? You have to be more explicit if I should have a chance understanding what you're saying. Please make a full example of how you want to document eg. Single Pass Range. | > | What do primary templates have to do with this? | > | > it is the behavior of the primary template that makes coillections act as Ranges. | | What primary template? all. primary function templates and primary metafunctions. they all assume a Collection argument. | > boost\libs\range\doc\external_concepts.html | > | > described the idea of external and internal versions of concept, roughly correponding to | > whether functions are free-standing or members. | | Eeew! you probably glad I gave up the idea then. | > In that terminology, we could say | > | > 1. Collection would be a refinement of InternalRange | > 2. ExternalRange will, by definition, work with all corresponding InternalRange | | Except that if it relies on ADL, it's not "by definition" because an | unrelated begin() with the wrong semantics could be defined. true. currently there is no use of ADL. Thorsten