Boost logo

Boost :

From: Thorsten Ottosen (nesotto_at_[hidden])
Date: 2004-09-03 10:24:06


| "Thorsten Ottosen" <nesotto_at_[hidden]> writes:
|
| > "David Abrahams" <dave_at_[hidden]> wrote in message news:ur7pkurnp.fsf_at_boost-consulting.com...

[snip, adl_begin()]

| > apart from the adl stuff, it already is like that. Did you mean to
| > put in the range namespace to avoid problems with classes in boost?
|
| No, I mean so that the concept can be described in terms of
| boost::range and Collection can become a refinement of Range.

I see.
 
| > | Then you change the Range concept to require that
| > | boost::range::begin(col) works.
| >
| > hm...yeah...one could perhaps state both syntaxes as part of the concept, eg
| >
| > Valid expressions
| > ============
| > begin( a )
| > or
| > a.begin()
|
| 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, yet Collection is supposed to refine Range.
 
| > perhaps the Range concept could specify
| >
| > Primary Template Behavior
| > ==================
| > return a.begin()
| >
| > ?
|
| Wha???
|
| What do primary templates have to do with this?

it is the behavior of the primary template that makes coillections act as Ranges.
 
| > And maybe we don't have to talk about collection as a refinement;
| > maybe a new term is in order, like "act", sa in "all Collections may
| > act as Ranges".
|
| ... provided that "..."
|
| Or, we could say that certain refinements of Collection are also
| refinements of Range.

hm...it doesn't sound right, does it?

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. In that terminology, we could say

1. Collection would be a refinement of InternalRange
2. ExternalRange will, by definition, work with all corresponding InternalRange

br

Thorsten


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