|
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