1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
#ifndef UPDATE_HPP
#define UPDATE_HPP

#include <utility>

template<typename F, typename Variable>
void update(F&& f, Variable& var) {
   f(var);
}

template<typename F, typename Variable, typename... Variables>
void update(F&& f, Variable& var, Variables&... vars) {
   f(var); update(std::move(f), vars...);
}

#endif