
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