From 38135940e97cfa7a8268881a1cf2fb496a3df207 Mon Sep 17 00:00:00 2001 From: ToruNiina Date: Tue, 11 Dec 2018 11:35:35 +0900 Subject: [PATCH] add expect(toml::value) --- toml/get.hpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/toml/get.hpp b/toml/get.hpp index 430c4cc..056da64 100644 --- a/toml/get.hpp +++ b/toml/get.hpp @@ -276,5 +276,48 @@ get_or(const toml::Table& tab, const toml::key& ky, T&& opt) typename std::remove_reference::type>::type>(tab.find(ky)->second); } +// ============================================================================ +// expect + +template +auto expect(const toml::value& v) + -> result(v)), std::string> +{ + try + { + return ok(get(v)); + } + catch(const type_error& te) + { + return err(te.what()); + } +} +template +auto expect(toml::value& v) + -> result(v)), std::string> +{ + try + { + return ok(get(v)); + } + catch(const type_error& te) + { + return err(te.what()); + } +} +template +auto expect(toml::value&& v) + -> result(std::move(v))), std::string> +{ + try + { + return ok(get(std::move(v))); + } + catch(const type_error& te) + { + return err(te.what()); + } +} + } // toml #endif// TOML11_GET