#ifndef UPDATE_HPP #define UPDATE_HPP #include #include namespace update_with_index_impl { template void update(F&& f, std::size_t size, std::size_t index, Variable& var) { f(size, index, var); } template void update(F&& f, std::size_t size, std::size_t index, Variable& var, Variables&... vars) { f(size, index, var); update(std::move(f), size, index+1, vars...); } } // namespace update_with_index_impl template void update_with_index(F&& f, Variables&... vars) { update_with_index_impl::update(std::move(f), sizeof...(vars), 0, vars...); } #endif