Skip to content

Commit ccad1a9

Browse files
committed
feat [skip ci]: update single_include
1 parent 0d1a52c commit ccad1a9

File tree

1 file changed

+26
-12
lines changed

1 file changed

+26
-12
lines changed

single_include/toml.hpp

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3807,14 +3807,14 @@ struct is_std_tuple_impl<std::tuple<Ts...>> : std::true_type{};
38073807
template<typename T>
38083808
using is_std_tuple = is_std_tuple_impl<cxx::remove_cvref_t<T>>;
38093809

3810-
#if TOML11_CPLUSPLUS_STANDARD_VERSION >= TOML11_CXX17_VALUE
3811-
# if __has_include(<optional>)
3810+
#if defined(TOML11_HAS_OPTIONAL)
38123811
template<typename T> struct is_std_optional_impl : std::false_type{};
38133812
template<typename T>
38143813
struct is_std_optional_impl<std::optional<T>> : std::true_type{};
38153814
template<typename T>
38163815
using is_std_optional = is_std_optional_impl<cxx::remove_cvref_t<T>>;
3817-
# endif // <optional>
3816+
#else
3817+
template<typename T> struct is_std_optional : std::false_type{};
38183818
#endif // > C++17
38193819

38203820
template<typename T> struct is_std_array_impl : std::false_type{};
@@ -3853,6 +3853,11 @@ template<typename V, typename S>
38533853
struct is_string_view_of : std::false_type {};
38543854
template<typename C, typename T>
38553855
struct is_string_view_of<std::basic_string_view<C, T>, std::basic_string<C, T>> : std::true_type {};
3856+
#else
3857+
template<typename T>
3858+
struct is_std_basic_string_view : std::false_type {};
3859+
template<typename V, typename S>
3860+
struct is_string_view_of : std::false_type {};
38563861
#endif
38573862

38583863
template<typename T> struct is_chrono_duration_impl: std::false_type{};
@@ -9471,21 +9476,24 @@ namespace toml
94719476
// find<T>(value, key);
94729477

94739478
template<typename T, typename TC>
9474-
decltype(::toml::get<T>(std::declval<basic_value<TC> const&>()))
9479+
cxx::enable_if_t<cxx::negation<detail::is_std_optional<T>>::value,
9480+
decltype(::toml::get<T>(std::declval<basic_value<TC> const&>()))>
94759481
find(const basic_value<TC>& v, const typename basic_value<TC>::key_type& ky)
94769482
{
94779483
return ::toml::get<T>(v.at(ky));
94789484
}
94799485

94809486
template<typename T, typename TC>
9481-
decltype(::toml::get<T>(std::declval<basic_value<TC>&>()))
9487+
cxx::enable_if_t<cxx::negation<detail::is_std_optional<T>>::value,
9488+
decltype(::toml::get<T>(std::declval<basic_value<TC>&>()))>
94829489
find(basic_value<TC>& v, const typename basic_value<TC>::key_type& ky)
94839490
{
94849491
return ::toml::get<T>(v.at(ky));
94859492
}
94869493

94879494
template<typename T, typename TC>
9488-
decltype(::toml::get<T>(std::declval<basic_value<TC>&&>()))
9495+
cxx::enable_if_t<cxx::negation<detail::is_std_optional<T>>::value,
9496+
decltype(::toml::get<T>(std::declval<basic_value<TC>&&>()))>
94899497
find(basic_value<TC>&& v, const typename basic_value<TC>::key_type& ky)
94909498
{
94919499
return ::toml::get<T>(std::move(v.at(ky)));
@@ -9495,19 +9503,22 @@ find(basic_value<TC>&& v, const typename basic_value<TC>::key_type& ky)
94959503
// find<T>(value, idx)
94969504

94979505
template<typename T, typename TC>
9498-
decltype(::toml::get<T>(std::declval<basic_value<TC> const&>()))
9506+
cxx::enable_if_t<cxx::negation<detail::is_std_optional<T>>::value,
9507+
decltype(::toml::get<T>(std::declval<basic_value<TC> const&>()))>
94999508
find(const basic_value<TC>& v, const std::size_t idx)
95009509
{
95019510
return ::toml::get<T>(v.at(idx));
95029511
}
95039512
template<typename T, typename TC>
9504-
decltype(::toml::get<T>(std::declval<basic_value<TC>&>()))
9513+
cxx::enable_if_t<cxx::negation<detail::is_std_optional<T>>::value,
9514+
decltype(::toml::get<T>(std::declval<basic_value<TC>&>()))>
95059515
find(basic_value<TC>& v, const std::size_t idx)
95069516
{
95079517
return ::toml::get<T>(v.at(idx));
95089518
}
95099519
template<typename T, typename TC>
9510-
decltype(::toml::get<T>(std::declval<basic_value<TC>&&>()))
9520+
cxx::enable_if_t<cxx::negation<detail::is_std_optional<T>>::value,
9521+
decltype(::toml::get<T>(std::declval<basic_value<TC>&&>()))>
95119522
find(basic_value<TC>&& v, const std::size_t idx)
95129523
{
95139524
return ::toml::get<T>(std::move(v.at(idx)));
@@ -9716,19 +9727,22 @@ find(basic_value<TC>&& v, const K1& k1, const K2& k2, const Ks& ... ks)
97169727
// find<T>(v, keys...)
97179728

97189729
template<typename T, typename TC, typename K1, typename K2, typename ... Ks>
9719-
decltype(::toml::get<T>(std::declval<const basic_value<TC>&>()))
9730+
cxx::enable_if_t<cxx::negation<detail::is_std_optional<T>>::value,
9731+
decltype(::toml::get<T>(std::declval<const basic_value<TC>&>()))>
97209732
find(const basic_value<TC>& v, const K1& k1, const K2& k2, const Ks& ... ks)
97219733
{
97229734
return find<T>(v.at(detail::key_cast<TC>(k1)), detail::key_cast<TC>(k2), ks...);
97239735
}
97249736
template<typename T, typename TC, typename K1, typename K2, typename ... Ks>
9725-
decltype(::toml::get<T>(std::declval<basic_value<TC>&>()))
9737+
cxx::enable_if_t<cxx::negation<detail::is_std_optional<T>>::value,
9738+
decltype(::toml::get<T>(std::declval<basic_value<TC>&>()))>
97269739
find(basic_value<TC>& v, const K1& k1, const K2& k2, const Ks& ... ks)
97279740
{
97289741
return find<T>(v.at(detail::key_cast<TC>(k1)), detail::key_cast<TC>(k2), ks...);
97299742
}
97309743
template<typename T, typename TC, typename K1, typename K2, typename ... Ks>
9731-
decltype(::toml::get<T>(std::declval<basic_value<TC>&&>()))
9744+
cxx::enable_if_t<cxx::negation<detail::is_std_optional<T>>::value,
9745+
decltype(::toml::get<T>(std::declval<basic_value<TC>&&>()))>
97329746
find(basic_value<TC>&& v, const K1& k1, const K2& k2, const Ks& ... ks)
97339747
{
97349748
return find<T>(std::move(v.at(detail::key_cast<TC>(k1))), detail::key_cast<TC>(k2), ks...);

0 commit comments

Comments
 (0)