Boost logo

Boost :

From: Aleksey Gurtovoy (agurtovoy_at_[hidden])
Date: 2004-10-04 12:31:42


Terje Slettebø writes:
> In the operator/concept traits library (now renamed Concept Traits Library)
> that I posted about a while ago, there were, as Tobias Schwinger pointed out
> in a mail, several filenames that were longer than then Boost 31 character
> maximum. I was aware of this, but didn't know how stringent this requirement
> was (7 of 37 standard concept traits have more than 31 characters, the
> maximum being 37 characters). However, as I understand, it's not just
> platforms, but also things like media (such as CDs) that may impose this
> limit, making it more serious.
>
> The library will be put in a CVS at the http://www.neoscientists.org/
> server, and we're not sure how to deal with the maximum filename length. The
> current directory structure is, e.g.:
>
> #include <boost/concept_traits/std/is_default_constructible.hpp>
> #include <boost/concept_traits/std/is_random_access_container.hpp>
> #include <boost/concept_traits/std/is_random_access_iterator.hpp>
> #include <boost/concept_traits/std/is_generator.hpp>
>
> Tobias suggested the following (the "model" part is still not decided, and
> may be considered separately):
>
> #include <boost/concept_traits/model/std/constructbility/default.hpp>
> #include <boost/concept_traits/model/std/container/random_access.hpp>
> #include <boost/concept_traits/model/std/iterator/random_access.hpp>
> #include <boost/concept_traits/model/std/function/generator.hpp>

I would keep the "is_" part and try to keep the general purpose traits
intact:

    #include <boost/concept_traits/model/std/is_default_constructible.hpp>
    #include <boost/concept_traits/model/std/container/is_random_access.hpp>
    #include <boost/concept_traits/model/std/iterator/is_random_access.hpp>
    #include <boost/concept_traits/model/std/function/is_generator.hpp>

"constructbility/default.hpp" is simply confusing.

>
> The traits would still retain their names, so
> <boost/concept_traits/model/std/iterator/random_access.hpp> would have
> is_random_access_iterator<T>.
>
> To consider the issue, we looked at Boost's type_traits, where all the
> traits are in the same directory, as well as libraries like MPL, where it
> appears to move to <boost/mpl/arithmetic/plus.hpp> (from
> <boost/mpl/plus.hpp>) - at least, the "arithmetic" directory is there.

Actually, it's the other way around -- they *used* to reside inside the
directory, but at some point were moved to the top level. There are pros
and cons to both ways.

> The same goes for PP-lib.
>
> However, in the case of CTL, the components would then have a different name
> than the source file, so I felt like getting some more opinions on the
> subject.
>
> What do you think?
>
> Opinions on whether or not "model" should be included in the path is also
> welcome. Bear in mind in that case that the "concept_traits" directory will
> also contain the "operator" (for the operator traits)

Understand this one, ...

> and "utility" (for components to define new traits),

... but not this.

> so "model" might more clearly separate out
> that these are the concept traits, themselves.

IMO just "std" is enough.

> Also, what is the opinion on singular/plural? Boost's type_traits is plural
> (and this is quite similar to them), but there are otherwise mostly singular
> names in Boost (and the library requirements states that libraries should
> usually be singular).

IMO this one should be plural ("concept_traits").

--
Aleksey Gurtovoy
MetaCommunications Engineering

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