Slide 22
Slide 22 text
*OGFSFODF
template >>
auto _apply(S&& func, const OpTypeE& cmd, VS&& arg) {
return branch(std::move(func), cmd, std::move(arg));
}
template >>
std::string apply(S&& func, const S& cmd, VS&& arg) {
namespace except = core::exception;
if (auto itr = subcmd_map.find(cmd); itr != subcmd_map.end())
return _apply(std::move(func), itr->second, std::move(arg));
else if (itr = option_map.find(cmd); itr != option_map.end())
return _apply(std::move(func), itr->second, std::move(arg));
else
throw except::invalid_first_arg("Invalid argument");
}