From 74fc70cfee9d013dfd92d7c1a08cfc064b01d045 Mon Sep 17 00:00:00 2001 From: ToruNiina Date: Mon, 17 Dec 2018 10:57:40 +0900 Subject: [PATCH] return copied object from except having reference makes some technical difficulties. --- toml/get.hpp | 98 +++++----------------------------------------------- 1 file changed, 8 insertions(+), 90 deletions(-) diff --git a/toml/get.hpp b/toml/get.hpp index 1e71e28..3dfc056 100644 --- a/toml/get.hpp +++ b/toml/get.hpp @@ -480,52 +480,23 @@ auto get_or(toml::value&& v, const toml::key& ky, T&& opt) // expect template -auto expect(const toml::value& v) - -> result(v)), std::string> +result expect(const toml::value& v) noexcept { try { return ok(get(v)); } - catch(const type_error& te) + catch(const std::exception& e) { - return err(te.what()); + return err(e.what()); } } template -auto expect(toml::value& v) - -> result(v)), std::string> +result expect(const toml::value& v, const toml::key& k) noexcept { 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()); - } -} - -template -auto expect(const toml::value& v, const toml::key& k) - -> result(v, k)), std::string> -{ - try - { - return ok(get(v, k)); + return ok(find(v, k)); } catch(const std::exception& e) { @@ -533,65 +504,12 @@ auto expect(const toml::value& v, const toml::key& k) } } template -auto expect(toml::value& v, const toml::key& k) - -> result(v, k)), std::string> +result expect(const toml::table& t, const toml::key& k, + std::string tablename = "unknown table") noexcept { try { - return ok(get(v, k)); - } - catch(const std::exception& e) - { - return err(e.what()); - } -} -template -auto expect(toml::value&& v, const toml::key& k) - -> result(std::move(v), k)), std::string> -{ - try - { - return ok(get(std::move(v), k)); - } - catch(const std::exception& e) - { - return err(e.what()); - } -} - -template -auto expect(const toml::table& t, const toml::key& k, std::string tn) - -> result(t, k, std::move(tn))), std::string> -{ - try - { - return ok(get(t, k, std::move(tn))); - } - catch(const std::exception& e) - { - return err(e.what()); - } -} -template -auto expect(toml::table& t, const toml::key& k, std::string tn) - -> result(t, k, std::move(tn))), std::string> -{ - try - { - return ok(get(t, k, std::move(tn))); - } - catch(const std::exception& e) - { - return err(e.what()); - } -} -template -auto expect(toml::table&& t, const toml::key& k, std::string tn) - -> result(std::move(t), k, std::move(tn))), std::string> -{ - try - { - return ok(get(std::move(t), k, std::move(tn))); + return ok(find(t, k, std::move(tablename))); } catch(const std::exception& e) {