From: Tobias Schwinger (tschwinger_at_[hidden])
Date: 2005-06-30 04:32:54
Greer, Joe wrote:
>>From: David Abrahams <dave_at_[hidden]>
>>>Rob Stewart <stewart_at_[hidden]> writes:
>>>> When classifying types, it is often necessary to test for any
>>>> one of several variations of an aspect. A common case is
>>>> ignoring an aspect which means to allow a match for any
>>>> variation of that aspect
> Please excuse me for jumping into the middle of this discussion. I am
> only a budding metaprogrammer, so that influences how I read things like
> this, so bear with me. With this phrasing,
I don't believe it's metaprogramming specific -- let's clear up the logic, first:
> it is unclear to me whether
> the common case is "ignoring an aspect" or if it is really "allowing a
> match for any variation of an aspect"
Given a variable 'a' which can be either '1', '2' or '3' it doesn't make a difference:
if ((a == 1) || (a == 2) || (a == 3)) // match any variation of a
// do something
is logically equivalent to
// no if -- just ignore a
// do something
> which I can do by "ignoring an
Equivalence is commutative:
You can ignore 'a' by allowing any variation and you can allow any variation by
ignoring 'a' -- no difference, again.
Making any difference would be talking about implementation details in a parapraph
about plain logic.
>>Neither quoted sentence seems long or complex. Perhaps there
>>was something you snipped to which you were referring?
>>Here's the full text of my suggestion:
>> When classifying types, it is often necessary to test for any
>> one of several variations of an aspect. A common case is
>> ignoring an aspect which means to allow a match for any
>> variation of that aspect and is only useful when also testing
>> for other aspects. Ignoring an aspect means using an
>> "unspecified_*" tag. For example, allowing a match for any
>> decoration requires using the <tt>unspecified_decoration</tt>
I have the following problems with this:
- it's too long
- 80% focusses on a special case
- it's not true that it only makes sense when testing for other aspects
> In this paragraph, you are telling me that "ignoring an aspect" is
> "allow a match for any variation of that aspect" (sentence 2) and that
> "ignoring an aspect" is "using an "unspecified_*" tag" (sentence 3).
> The use of "means" in both sentences is awkward. It is also unclear
> that "allow a match for any variation of that aspect" is actually the
> same as "using an unspecified_* tag."
> I tend to be more conversational in my writing, but I would be tempted
> to write something like:
> When classifying types, it is often necessary to test for any one of
> several variations of an aspect. A common case is allowing a match for
> any variation of an aspect. This is done by ignoring that aspect and is
> implemented by using an "unspecified_*" tag. For example, to allow a
> For any decoration would require using the
> <tt>unspecified_decoration</tt> tag.
This one suffers similar problems:
> I just wanted to throw in my $.02. I'll go back into lurker mode now.
OK, here is my current top-candidate:
When classifying types it is often necessary to match against
several variations of one aspect.
There are special variations which make this possible. These are called
The most important case is to match any variation; that is, to ignore
that aspect in the context of type classification. Because of this, every
aspect has at
least one abstract variation named "unspecified_" plus the aspect name.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk