c++ - C++11: Parameter Pack Expansion Counter -


i'd increment counter each parameter during parameter pack expansion. here pseudo code of want achieve:

    template<class ... args>     void dosomething(args ... _args)     {         std::size_t counter = 0;         bar(dosomethingwithonearg(_args, counter++)...);     } 

the problem code is, while order of argsis preserved, order in function parameters evaluated not defined, i.e. on clang order in counter expressions evaluated same order of args while in gcc reversed. portable, standard way of achieving this?

thanks!

you add helper function:

template <typename ...args> void dosomething(args &&... args) {     dosomethingimpl(std::make_index_sequence<sizeof...(args)>(),                     std::forward<args>(args)...); }  template <typename ...args, std::size_t ...n> void dosomethingimpl(std::index_sequence<n...>, args &&... args) {     bar(onecommand(std::forward<args>(args), n)...); }