
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.
Oh, you can do that already, if you don't mind turning that push_back call into a non-void expression:
template<typename... Args> void variadic_unroll(const Args&...) { }
template<typename... Values> void push_back_all(const Values&... values) { variadic_unroll((push_back(values), 0)...); }
Good. I can set the bar higher if you want ;-). What about storing the return value in a tuple: bool test() { /**/ } template<typename... Values> void test_all(const Values&... values) { //Is this possible? //tuple<decltype(test(Values))...> ret_tuple = ... //or using "auto" auto ret_tuple = variadic_unroll(test(values)); } It would be also nice a way to define a tuple of N objects of the same type: auto tup = make_tuple_n<bool, 6>; And iterate at runtime in a tuple of N objects of the same type, to get each value (the iterator would climb in the inheritance-emulation code when incremeting it): for( bool ok : ret_tuple ) std::cout << "return value:" << ok; Keep up the good work! Ion