namespace ugcs::vsm::callback_internal

namespace callback_internal {

// structs

template <class Callback, size_t idx, typename... Args>
struct Callback_args_checker;

template <class Callback, size_t idx, typename Arg>
struct Callback_args_checker<Callback, idx, Arg>;

template <class Callback>
struct Callback_args_checker<Callback, 0>;

template <class Callback, size_t idx, typename Arg, typename... Args>
struct Callback_args_checker<Callback, idx, Arg, Args...>;

// classes

template <class Result, typename... Args>
class Dummy_callback_helper;

template <typename... Args>
class Dummy_callback_helper<void, Args...>;

} // namespace callback_internal