feat [skip ci]: update single_include

This commit is contained in:
ToruNiina
2025-03-31 16:36:19 +00:00
parent 650e4c17f9
commit a01fe3b4c1

View File

@@ -3653,6 +3653,7 @@ struct from;
#include <string>
#include <tuple>
#include <type_traits>
#include <unordered_set>
#include <utility>
#if defined(TOML11_HAS_STRING_VIEW)
@@ -3807,6 +3808,12 @@ struct is_std_tuple_impl<std::tuple<Ts...>> : std::true_type{};
template<typename T>
using is_std_tuple = is_std_tuple_impl<cxx::remove_cvref_t<T>>;
template<typename T> struct is_unordered_set_impl : std::false_type {};
template<typename T>
struct is_unordered_set_impl<std::unordered_set<T>> : std::true_type {};
template<typename T>
using is_unordered_set = is_unordered_set_impl<cxx::remove_cvref_t<T>>;
#if defined(TOML11_HAS_OPTIONAL)
template<typename T> struct is_std_optional_impl : std::false_type{};
template<typename T>
@@ -9227,6 +9234,25 @@ get(const basic_value<TC>& v)
cxx::make_index_sequence<std::tuple_size<T>::value>{});
}
// ============================================================================
// std::unordered_set
template<typename T, typename TC>
cxx::enable_if_t<toml::detail::is_unordered_set<T>::value, T>
get(const basic_value<TC>& v)
{
using value_type = typename T::value_type;
const auto& a = v.as_array();
T container;
for (const auto& elem : a)
{
container.insert(get<value_type>(elem));
}
return container;
}
// ============================================================================
// map-like types; most likely STL map, like std::map or std::unordered_map.