Is there and existing function (or syntax) like:
inline void noop(...) { /* EMPTY */ }
so I can do things like:
template <class... T>
void foo(T... args) {
noop( do_side_effect<T>(args)... );
}
------------- edit -----------
because something like this can not be compiled:
template <class... T>
void foo(T... args) {
do_side_effect<T>(args)...;
}
template <class... T>
void foo(T... args) {
( do_side_effect<T>(args)... );
}
------------ edit 2 -----------
An example to show a possible use case.
template <class T, class F, int... indices>
void _tuple_foreach_details(T&& tuple, F& functor, std::index_sequence<indices...>){
noop( functor(std::get<indices>(tuple))... );
/* this means:
functor(std::get<0>(tuple));
functor(std::get<1>(tuple));
...
functor(std::get<N>(tuple));
*/
}
template <class T, class F>
void tuple_foreach(T&& tuple, F& functor) {
_tuple_foreach_details<T, F, std::make_index_sequence<std::tuple_size_v<T>>>(tuple, functor, {});
}