diff --git a/tests/test_get.cpp b/tests/test_get.cpp index 3dc753c..ddda97d 100644 --- a/tests/test_get.cpp +++ b/tests/test_get.cpp @@ -116,6 +116,14 @@ BOOST_AUTO_TEST_CASE(test_get_exact) tab["key3"] = toml::value(123); BOOST_CHECK(tab == toml::get(v)); } + { + toml::value v1(42); + BOOST_CHECK(v1 == toml::get(v1)); + + toml::value v2(54); + toml::get(v1) = v2; + BOOST_CHECK(v2 == toml::get(v1)); + } } BOOST_AUTO_TEST_CASE(test_get_integer_type) diff --git a/toml/get.hpp b/toml/get.hpp index cddbe73..1e71e28 100644 --- a/toml/get.hpp +++ b/toml/get.hpp @@ -33,6 +33,30 @@ inline T&& get(value&& v) return std::move(v.cast::value>()); } +// ============================================================================ +// T == toml::value; identity transformation. + +template::value, std::nullptr_t>::type = nullptr> +inline T& get(value& v) +{ + return v; +} + +template::value, std::nullptr_t>::type = nullptr> +inline T const& get(const value& v) +{ + return v; +} + +template::value, std::nullptr_t>::type = nullptr> +inline T&& get(value&& v) +{ + return std::move(v); +} + // ============================================================================ // integer convertible from toml::Integer