Terje Slettebø wrote:
>From: "Anthony Williams" <anthony_w.geo@yahoo.com>
> Does the boost concept checking library support overloading on concepts,
so
> you can have one implementation of an algorithm for random access
iterators,
> and another for bidirectional iterators, for example?
As someone was pointed out in another posting, you can't use BCCL for this,
since the checks fail with a compile error if a concept doesn't match.
However, if you're able to define compile-time traits performing the concept
check, then you _can_ overload on concepts, using enable_if. See the Concept
Traits Library
(
http://web.archive.org/web/20050428001254/http://neoscientists.org/~tschwinger/boostdev/concept_traits/libs/concept_traits/doc/) for an approach to
this.
This library is no longer maintained (at least by me, and unfortunately I
don't have the source available right now, but Tobias Schwinger may have it
around somewhere), not at least due to the upcoming C++0x, where this is
supported in the language.
The above library was mostly an experiment about how to get support for
concepts in a library solution, but you really need language support to get
the full effect of concepts.
That's really interesting and exactly what I was looking for a while back! According to David Abrahams (
http://www.nabble.com/forum/ViewPost.jtp?post=15220025&framed=y) you can't implement all requirements of all concepts as traits though. Did you bump into this? What kind of requirements can't be implemented as traits?
I'll have a look at your library later on today.
Best Regards, Johan