Boost logo

Boost :

From: Douglas Gregor (doug.gregor_at_[hidden])
Date: 2007-04-12 10:48:58


On Apr 12, 2007, at 12:16 AM, Mathias Gaunard wrote:
> Thank you.
> This is awesome.
>
> A version of GCC, and even precompiled binaries, with all those C++0x
> features is a good thing as it will allow early usage and spreading of
> those new features.

The "OSL5" regression tester for Boost CVS HEAD tests a version of
GCC with all of those C++0x features *except* concepts, so we can
start (conditionally) using these features in Boost libraries.

> Could you give more info about the incompability between variadic
> templates and concepts though?

Don't write a constrained template (i.e., one with any concept
requirements placed on it) that uses variadic templates, e.g., the
following will probably crash:

        auto concept OutputStreamable<typename T> {
                std::ostream operator<<(std::ostream&, const T&);
        }

        void print() { }

        template<typename T, typename... Rest>
        requires OutputStreamable<T>, OutputStreamable<Rest>...
        void print(const T& x, const Rest&... rest) {
                print(x);
                print(rest...);
        }

Take away the "requires" clause and it should be fine, because you
would be using variadic templates separately from concepts.

        Cheers,
        Doug


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