
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