Boost logo

Boost :

From: Douglas Gregor (doug.gregor_at_[hidden])
Date: 2006-08-05 18:22:38


On Aug 5, 2006, at 3:04 PM, Ion Gaztañaga wrote:

>> I see that you have chosen the "core" set of the previous paper menu.
>> You have discarded other more advanced features like "pairwise
>> expansion"? This feature was _very_ interesting to implement perfect
>> forwarding and in-place constructors.
>
> Oooops! I see in the paper that perfect forwarding is present along
> with
> other features but are not explicitly listed. I thought that "core"
> features was N1704's "Common cases" prepackaged features option. Could
> you say which features of the N1704's list have you implement or
> plan to
> implement? The full list was:
>
> -> Basic variadic templates

Implemented.

> -> First-class parameter packs

Will not be implemented. There are serious technical problems with
implementing first-class parameter packs that we had not foreseen. In
particular, to do a decent job of making sure parameter packs are
used properly when a template is defined, you need to know *exactly*
which things are parameter packs and which things aren't. With first-
class parameter packs, you don't always have this information because.

> -> Initializer lists are parameter packs

Still thinking about this one. It looks like it might be a good idea.

> -> Ellipsis operator for classes

Not implemented. I imagine there are better ways to do reflection/
introspection.

I think overloading of the ellipsis operator was also part of this
section. This has some of the same technical issues as first-class
parameter packs. But, check out the "indexes" trick for "unpacking"
the values in a tuple<> with "...".

> -> Length of parameter packs

Implemented.

> -> Get Nth element for parameter pack

Not implemented, but I'm seriously considering it. We'd need to
introduce a new operator (".[]" has been suggested), which worries me
slightly. C++ already has a lot of operators :)

> -> Arbitrary expansion

Implemented.

> -> Nested expansion

I haven't really tested this one much, but I believe it will work so
long as the outer and inner pack/unpack expressions have disjoint
parameter packs.

> -> Pairwise expansion

Implemented.

> -> Folding expansion

Will not be implemented. It's powerful, sure, but it's just... too...
weird.

> -> Arbitrary matching patterns

Implemented.

> -> Pairwise matching patterns

Implemented.

   Cheers,
   Doug


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