$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Jonathan Turkanis (technews_at_[hidden])
Date: 2004-03-02 17:10:21
"Powell, Gary" <powellg_at_[hidden]> wrote in message
news:16D81990DBE42642A8CA977A55FF116A02D9F636_at_ex-mail-sea-02.ant.amazon.com...
> This library is an interesting concept but when I looked in it, it
didn't have what I would have thought were "container traits" the way
I think of "iterator traits". From the VTL library I wanted to be able
to query the container to see if it was an associative container, or a
sequence container or a random access container, i.e. had an
operator[]() etc.
>
> Can one of the authors explain the purpose of this library?
>
Thorsten Ottosen is the authorative source on this point, but I think
the library is mostly to provide support for algorithms which treat
standard constainers, built-in arrays and iterator ranges uniformly.
(I'm leaving out one case.)
I, too, would like traits of the type you suggest, and I wish they
would be added to the library.
One problem, of course, is that theoretcially you could have a type
which look like a container, because of its member types, but doesn't
have the correct semantics. Also, the amount of introspection required
to be reasonably sure you have a container has some compile-time cost.
I think these problems are negligible if the traits are named and
documented with these considerations in mind. Probably I've been
reading the FC++ docs too much recently, but one might call them
'maybe_is_container', 'maybe_is_sequence', ... ;-)
I think there should at least be traits for detecting standard
container types (is_basic_string, is_vector, is_standard_sequence).
One problem is that you might end up including the whole STL just to
define these traits.
Jonathan