|
|
@@ -46,14 +46,18 @@ template <typename... Args, size_t... Is>
|
|
|
void cli_invoke(std::function<void(Args...)> cb, cli::args_t const & args,
|
|
|
std::index_sequence<Is...>) {
|
|
|
using tuple = std::tuple<Args...>;
|
|
|
- cb(cli::from_string<std::tuple_element<Is, tuple>>(args[Is])...);
|
|
|
+ cb(cli::from_string<std::tuple_element_t<Is, tuple>>(args[Is])...);
|
|
|
}
|
|
|
|
|
|
template <typename... Args>
|
|
|
cli & cli::register_callback(std::string const & handle,
|
|
|
std::function<void(Args...)> cb) {
|
|
|
- callbacks_.emplace(handle, [cb](args_t const & args) {
|
|
|
- if (sizeof...(Args) > args.size()) return; // TODO: Error message
|
|
|
+ callbacks_.emplace(handle, [=](args_t const & args) {
|
|
|
+ if (sizeof...(Args) > args.size()) {
|
|
|
+ std::cerr << "Missing Args in command '" << handle << "', " <<
|
|
|
+ sizeof...(Args) << " required, but " << args.size() << " input\n";
|
|
|
+ return;
|
|
|
+ }
|
|
|
cli_invoke(cb, args, std::make_index_sequence<sizeof...(Args)>());
|
|
|
});
|
|
|
return *this;
|