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