#ifndef OVERLOAD_HPP
#define OVERLOAD_HPP
template<typename... Callable>
struct overload : Callable...
{
  overload( Callable &&...c ) : Callable{std::move(c)}... {}
  using Callable::operator()...;
};
#endif