Boost logo

Boost :

From: John Maddock (john_at_[hidden])
Date: 2005-06-27 06:51:36


> The kinds of a type to be synthesised and complex classification queries
> are
> described by *tag* types.
>
> A tag encapsulates one or more aspects of the kind of type (see
> reference).
>
> Tags which only encapsulate a single aspect are called *aspect tags* in
> the
> following text.
> These can be used to query, whether a type's kind reflects this aspect:
>
> is_function_type< T, pointer >
> is_function_type< T, variadic >
>
> Aspects can be *abstract* : In this case several non-abstract
> possibilities of
> the same aspect are matched for querying:

I'm not sure that abstract is the right word here, I had to read right
through this text a couple of time to understand what you're driving at
here: more than one tag, which may be mutually exclusive in the type system.
So maybe:

"Aspects can also be *abstract*.
An abstract tag is the union of one or more tags, which are normally
mutually exclusive. They are used when querying a type, if you don't care
which of a set of mutually exclusive options is present, for example:

is_function_type<T, unbound>::value

will be true if T is a function type, a reference to a function, or a
pointer to a function."

This is still not terribly good English mind you!

I also don't like the use of "unbound" here, the name doesn't mean anything
to me. I see later on you have "unspecified_decoration", is this the same
meaning? If so I very much prefer the latter.

> Abstract tag aspects are concretized (see refernce) when used for type
> synthesis:

I don't think "concretized" is actually a word, but I know what you mean ;-)

Maybe someone has a better suggestion?

This is definitely going in the right direction IMO.

John.


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