
[moderator: this might be a bit off-topic, sorry] Douglas Gregor wrote:
On Aug 5, 2006, at 3:04 PM, Ion Gaztañaga wrote:
-> 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.
Umm. Native tuple without needing recursive instantiation trick was a very good idea to speed up compilation. Maybe the next time!
-> Initializer lists are parameter packs
Still thinking about this one. It looks like it might be a good idea.
In your vector example, the parameter list is introduced with a recursive function: template<typename T> class vector { public: template<typename... Values> vector(const Values&... values) { reserve(sizeof(values...)); push back all(values...); } private: void push_back_all() { } template<typename... Values> void push_back_all(const T& value, const Values&... values) { push_back(value); push_back_all(values...); } }; It would nice (just an idea) to have a way to execute an expression for every parameter, just like it was a function unrolling, implemented with with macros: template<typename... Values> void push back all(const T& value, const Values&... values) { std::variadic_unroll(push_back(value)); } Just an idea for the future. I don't know if implementing this is too difficult. That would help with compilation time.
Lots of good stuff implemented
*Very* nice work. Looks impressive. Ion