// accept network request std::string accept(const std::string & request) { NameAndBody nameAndBody = deserialize<NameAndBody>(request); auto it = commands_.find(std::get<0>(nameAndBody)); if (it != commands_.end()) { auto & func = it->second; std::string result = func(std::get<1>(nameAndBody)); return serialize(Maybe(true, result)); } return serialize(Maybe(false, "Not found")); }
static Maybe nothing() { return Maybe(); }
static Maybe just(const t &x) { return Maybe(x); }
static Maybe <T> make (Args&& ... args) { return Maybe (std::make_unique <T> (std::forward <Args> (args) ...)); }
static Maybe nothing() { return Maybe( base_type::make_second()); }