@@ -552,6 +552,7 @@ template <class Value, class Hash, class Pred, class Alloc>
552
552
#include < __ranges/from_range.h>
553
553
#include < __type_traits/container_traits.h>
554
554
#include < __type_traits/enable_if.h>
555
+ #include < __type_traits/invoke.h>
555
556
#include < __type_traits/is_allocator.h>
556
557
#include < __type_traits/is_integral.h>
557
558
#include < __type_traits/is_nothrow_assignable.h>
@@ -1190,7 +1191,8 @@ struct __container_traits<unordered_set<_Value, _Hash, _Pred, _Alloc> > {
1190
1191
// For unordered associative containers, if an exception is thrown by any operation
1191
1192
// other than the container's hash function from within an insert or emplace function
1192
1193
// inserting a single element, the insertion has no effect.
1193
- using __emplacement_has_strong_exception_safety_guarantee = __nothrow_invokable<_Hash, const _Value&>;
1194
+ static _LIBCPP_CONSTEXPR const bool __emplacement_has_strong_exception_safety_guarantee =
1195
+ __nothrow_invokable<_Hash, const _Value&>::value;
1194
1196
};
1195
1197
1196
1198
template <class _Value , class _Hash = hash<_Value>, class _Pred = equal_to<_Value>, class _Alloc = allocator<_Value> >
@@ -1809,7 +1811,8 @@ struct __container_traits<unordered_multiset<_Value, _Hash, _Pred, _Alloc> > {
1809
1811
// For unordered associative containers, if an exception is thrown by any operation
1810
1812
// other than the container's hash function from within an insert or emplace function
1811
1813
// inserting a single element, the insertion has no effect.
1812
- using __emplacement_has_strong_exception_safety_guarantee = __nothrow_invokable<_Hash, const _Value&>;
1814
+ static _LIBCPP_CONSTEXPR const bool __emplacement_has_strong_exception_safety_guarantee =
1815
+ __nothrow_invokable<_Hash, const _Value&>::value;
1813
1816
};
1814
1817
1815
1818
_LIBCPP_END_NAMESPACE_STD
0 commit comments