mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-17 03:36:37 +00:00
[libc++] Put _LIBCPP_NODEBUG on all internal aliases (#118710)
This significantly reduces the amount of debug information generated for codebases using libc++, without hurting the debugging experience.
This commit is contained in:
parent
4751f47c7a
commit
f69585235e
@ -56,10 +56,10 @@ struct __debug_less {
|
||||
// Pass the comparator by lvalue reference. Or in the debug mode, using a debugging wrapper that stores a reference.
|
||||
#if _LIBCPP_HARDENING_MODE == _LIBCPP_HARDENING_MODE_DEBUG
|
||||
template <class _Comp>
|
||||
using __comp_ref_type = __debug_less<_Comp>;
|
||||
using __comp_ref_type _LIBCPP_NODEBUG = __debug_less<_Comp>;
|
||||
#else
|
||||
template <class _Comp>
|
||||
using __comp_ref_type = _Comp&;
|
||||
using __comp_ref_type _LIBCPP_NODEBUG = _Comp&;
|
||||
#endif
|
||||
|
||||
_LIBCPP_END_NAMESPACE_STD
|
||||
|
@ -47,7 +47,7 @@ struct __copy_impl {
|
||||
|
||||
template <class _InIter, class _OutIter>
|
||||
struct _CopySegment {
|
||||
using _Traits = __segmented_iterator_traits<_InIter>;
|
||||
using _Traits _LIBCPP_NODEBUG = __segmented_iterator_traits<_InIter>;
|
||||
|
||||
_OutIter& __result_;
|
||||
|
||||
|
@ -48,13 +48,13 @@ struct _RangeAlgPolicy {};
|
||||
template <>
|
||||
struct _IterOps<_RangeAlgPolicy> {
|
||||
template <class _Iter>
|
||||
using __value_type = iter_value_t<_Iter>;
|
||||
using __value_type _LIBCPP_NODEBUG = iter_value_t<_Iter>;
|
||||
|
||||
template <class _Iter>
|
||||
using __iterator_category = ranges::__iterator_concept<_Iter>;
|
||||
using __iterator_category _LIBCPP_NODEBUG = ranges::__iterator_concept<_Iter>;
|
||||
|
||||
template <class _Iter>
|
||||
using __difference_type = iter_difference_t<_Iter>;
|
||||
using __difference_type _LIBCPP_NODEBUG = iter_difference_t<_Iter>;
|
||||
|
||||
static constexpr auto advance = ranges::advance;
|
||||
static constexpr auto distance = ranges::distance;
|
||||
@ -72,13 +72,13 @@ struct _ClassicAlgPolicy {};
|
||||
template <>
|
||||
struct _IterOps<_ClassicAlgPolicy> {
|
||||
template <class _Iter>
|
||||
using __value_type = typename iterator_traits<_Iter>::value_type;
|
||||
using __value_type _LIBCPP_NODEBUG = typename iterator_traits<_Iter>::value_type;
|
||||
|
||||
template <class _Iter>
|
||||
using __iterator_category = typename iterator_traits<_Iter>::iterator_category;
|
||||
using __iterator_category _LIBCPP_NODEBUG = typename iterator_traits<_Iter>::iterator_category;
|
||||
|
||||
template <class _Iter>
|
||||
using __difference_type = typename iterator_traits<_Iter>::difference_type;
|
||||
using __difference_type _LIBCPP_NODEBUG = typename iterator_traits<_Iter>::difference_type;
|
||||
|
||||
// advance
|
||||
template <class _Iter, class _Distance>
|
||||
@ -94,10 +94,10 @@ struct _IterOps<_ClassicAlgPolicy> {
|
||||
}
|
||||
|
||||
template <class _Iter>
|
||||
using __deref_t = decltype(*std::declval<_Iter&>());
|
||||
using __deref_t _LIBCPP_NODEBUG = decltype(*std::declval<_Iter&>());
|
||||
|
||||
template <class _Iter>
|
||||
using __move_t = decltype(std::move(*std::declval<_Iter&>()));
|
||||
using __move_t _LIBCPP_NODEBUG = decltype(std::move(*std::declval<_Iter&>()));
|
||||
|
||||
template <class _Iter>
|
||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 static void __validate_iter_reference() {
|
||||
@ -217,7 +217,7 @@ private:
|
||||
};
|
||||
|
||||
template <class _AlgPolicy, class _Iter>
|
||||
using __policy_iter_diff_t = typename _IterOps<_AlgPolicy>::template __difference_type<_Iter>;
|
||||
using __policy_iter_diff_t _LIBCPP_NODEBUG = typename _IterOps<_AlgPolicy>::template __difference_type<_Iter>;
|
||||
|
||||
_LIBCPP_END_NAMESPACE_STD
|
||||
|
||||
|
@ -50,7 +50,7 @@ struct __move_impl {
|
||||
|
||||
template <class _InIter, class _OutIter>
|
||||
struct _MoveSegment {
|
||||
using _Traits = __segmented_iterator_traits<_InIter>;
|
||||
using _Traits _LIBCPP_NODEBUG = __segmented_iterator_traits<_InIter>;
|
||||
|
||||
_OutIter& __result_;
|
||||
|
||||
|
@ -44,7 +44,7 @@ consteval auto __get_iterator_concept() {
|
||||
}
|
||||
|
||||
template <class _Iter>
|
||||
using __iterator_concept = decltype(__get_iterator_concept<_Iter>());
|
||||
using __iterator_concept _LIBCPP_NODEBUG = decltype(__get_iterator_concept<_Iter>());
|
||||
|
||||
} // namespace ranges
|
||||
_LIBCPP_END_NAMESPACE_STD
|
||||
|
@ -60,7 +60,7 @@ struct __unique_copy {
|
||||
}
|
||||
|
||||
template <class _InIter, class _OutIter>
|
||||
using __algo_tag_t = decltype(__get_algo_tag<_InIter, _OutIter>());
|
||||
using __algo_tag_t _LIBCPP_NODEBUG = decltype(__get_algo_tag<_InIter, _OutIter>());
|
||||
|
||||
template <input_iterator _InIter,
|
||||
sentinel_for<_InIter> _Sent,
|
||||
|
@ -70,7 +70,7 @@ struct __get_as_integer_type_impl<8> {
|
||||
};
|
||||
|
||||
template <class _Tp>
|
||||
using __get_as_integer_type_t = typename __get_as_integer_type_impl<sizeof(_Tp)>::type;
|
||||
using __get_as_integer_type_t _LIBCPP_NODEBUG = typename __get_as_integer_type_impl<sizeof(_Tp)>::type;
|
||||
|
||||
// This isn't specialized for 64 byte vectors on purpose. They have the potential to significantly reduce performance
|
||||
// in mixed simd/non-simd workloads and don't provide any performance improvement for currently vectorized algorithms
|
||||
@ -90,7 +90,7 @@ inline constexpr size_t __native_vector_size = 1;
|
||||
# endif
|
||||
|
||||
template <class _ArithmeticT, size_t _Np>
|
||||
using __simd_vector __attribute__((__ext_vector_type__(_Np))) = _ArithmeticT;
|
||||
using __simd_vector __attribute__((__ext_vector_type__(_Np))) _LIBCPP_NODEBUG = _ArithmeticT;
|
||||
|
||||
template <class _VecT>
|
||||
inline constexpr size_t __simd_vector_size_v = []<bool _False = false>() -> size_t {
|
||||
@ -106,7 +106,7 @@ _LIBCPP_HIDE_FROM_ABI _Tp __simd_vector_underlying_type_impl(__simd_vector<_Tp,
|
||||
}
|
||||
|
||||
template <class _VecT>
|
||||
using __simd_vector_underlying_type_t = decltype(std::__simd_vector_underlying_type_impl(_VecT{}));
|
||||
using __simd_vector_underlying_type_t _LIBCPP_NODEBUG = decltype(std::__simd_vector_underlying_type_impl(_VecT{}));
|
||||
|
||||
// This isn't inlined without always_inline when loading chars.
|
||||
template <class _VecT, class _Iter>
|
||||
|
@ -890,10 +890,10 @@ __sort_dispatch(_RandomAccessIterator __first, _RandomAccessIterator __last, _Co
|
||||
}
|
||||
|
||||
template <class _Type, class... _Options>
|
||||
using __is_any_of = _Or<is_same<_Type, _Options>...>;
|
||||
using __is_any_of _LIBCPP_NODEBUG = _Or<is_same<_Type, _Options>...>;
|
||||
|
||||
template <class _Type>
|
||||
using __sort_is_specialized_in_library = __is_any_of<
|
||||
using __sort_is_specialized_in_library _LIBCPP_NODEBUG = __is_any_of<
|
||||
_Type,
|
||||
char,
|
||||
#if _LIBCPP_HAS_WIDE_CHARACTERS
|
||||
|
@ -61,10 +61,10 @@ struct __debug_three_way_comp {
|
||||
// Pass the comparator by lvalue reference. Or in the debug mode, using a debugging wrapper that stores a reference.
|
||||
# if _LIBCPP_HARDENING_MODE == _LIBCPP_HARDENING_MODE_DEBUG
|
||||
template <class _Comp>
|
||||
using __three_way_comp_ref_type = __debug_three_way_comp<_Comp>;
|
||||
using __three_way_comp_ref_type _LIBCPP_NODEBUG = __debug_three_way_comp<_Comp>;
|
||||
# else
|
||||
template <class _Comp>
|
||||
using __three_way_comp_ref_type = _Comp&;
|
||||
using __three_way_comp_ref_type _LIBCPP_NODEBUG = _Comp&;
|
||||
# endif
|
||||
|
||||
#endif // _LIBCPP_STD_VER >= 20
|
||||
|
@ -46,7 +46,7 @@ struct __unwrap_iter_impl {
|
||||
// It's a contiguous iterator, so we can use a raw pointer instead
|
||||
template <class _Iter>
|
||||
struct __unwrap_iter_impl<_Iter, true> {
|
||||
using _ToAddressT = decltype(std::__to_address(std::declval<_Iter>()));
|
||||
using _ToAddressT _LIBCPP_NODEBUG = decltype(std::__to_address(std::declval<_Iter>()));
|
||||
|
||||
static _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _Iter __rewrap(_Iter __orig_iter, _ToAddressT __unwrapped_iter) {
|
||||
return __orig_iter + (__unwrapped_iter - std::__to_address(__orig_iter));
|
||||
|
@ -84,19 +84,19 @@ using atomic_uintmax_t = atomic<uintmax_t>;
|
||||
// C++20 atomic_{signed,unsigned}_lock_free: prefer the contention type most highly, then the largest lock-free type
|
||||
#if _LIBCPP_STD_VER >= 20
|
||||
# if ATOMIC_LLONG_LOCK_FREE == 2
|
||||
using __largest_lock_free_type = long long;
|
||||
using __largest_lock_free_type _LIBCPP_NODEBUG = long long;
|
||||
# elif ATOMIC_INT_LOCK_FREE == 2
|
||||
using __largest_lock_free_type = int;
|
||||
using __largest_lock_free_type _LIBCPP_NODEBUG = int;
|
||||
# elif ATOMIC_SHORT_LOCK_FREE == 2
|
||||
using __largest_lock_free_type = short;
|
||||
using __largest_lock_free_type _LIBCPP_NODEBUG = short;
|
||||
# elif ATOMIC_CHAR_LOCK_FREE == 2
|
||||
using __largest_lock_free_type = char;
|
||||
using __largest_lock_free_type _LIBCPP_NODEBUG = char;
|
||||
# else
|
||||
# define _LIBCPP_NO_LOCK_FREE_TYPES // There are no lockfree types (this can happen on unusual platforms)
|
||||
# endif
|
||||
|
||||
# ifndef _LIBCPP_NO_LOCK_FREE_TYPES
|
||||
using __contention_t_or_largest =
|
||||
using __contention_t_or_largest _LIBCPP_NODEBUG =
|
||||
__conditional_t<__libcpp_is_always_lock_free<__cxx_contention_t>::__value,
|
||||
__cxx_contention_t,
|
||||
__largest_lock_free_type>;
|
||||
|
@ -143,7 +143,7 @@ struct __atomic_base // false
|
||||
|
||||
template <class _Tp>
|
||||
struct __atomic_base<_Tp, true> : public __atomic_base<_Tp, false> {
|
||||
using __base = __atomic_base<_Tp, false>;
|
||||
using __base _LIBCPP_NODEBUG = __atomic_base<_Tp, false>;
|
||||
|
||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __atomic_base() _NOEXCEPT = default;
|
||||
|
||||
@ -228,7 +228,7 @@ struct __atomic_waitable_traits<__atomic_base<_Tp, _IsIntegral> > {
|
||||
|
||||
template <class _Tp>
|
||||
struct atomic : public __atomic_base<_Tp> {
|
||||
using __base = __atomic_base<_Tp>;
|
||||
using __base _LIBCPP_NODEBUG = __atomic_base<_Tp>;
|
||||
using value_type = _Tp;
|
||||
using difference_type = value_type;
|
||||
|
||||
@ -257,7 +257,7 @@ struct atomic : public __atomic_base<_Tp> {
|
||||
|
||||
template <class _Tp>
|
||||
struct atomic<_Tp*> : public __atomic_base<_Tp*> {
|
||||
using __base = __atomic_base<_Tp*>;
|
||||
using __base _LIBCPP_NODEBUG = __atomic_base<_Tp*>;
|
||||
using value_type = _Tp*;
|
||||
using difference_type = ptrdiff_t;
|
||||
|
||||
@ -389,7 +389,7 @@ private:
|
||||
}
|
||||
|
||||
public:
|
||||
using __base = __atomic_base<_Tp>;
|
||||
using __base _LIBCPP_NODEBUG = __atomic_base<_Tp>;
|
||||
using value_type = _Tp;
|
||||
using difference_type = value_type;
|
||||
|
||||
|
@ -221,7 +221,7 @@ public:
|
||||
_LIBCPP_HIDE_FROM_ABI void notify_all() const noexcept { std::__atomic_notify_all(*this); }
|
||||
|
||||
protected:
|
||||
using _Aligned_Tp [[__gnu__::__aligned__(required_alignment)]] = _Tp;
|
||||
using _Aligned_Tp [[__gnu__::__aligned__(required_alignment), __gnu__::__nodebug__]] = _Tp;
|
||||
_Aligned_Tp* __ptr_;
|
||||
|
||||
_LIBCPP_HIDE_FROM_ABI __atomic_ref_base(_Tp& __obj) : __ptr_(std::addressof(__obj)) {}
|
||||
@ -241,7 +241,7 @@ template <class _Tp>
|
||||
struct atomic_ref : public __atomic_ref_base<_Tp> {
|
||||
static_assert(is_trivially_copyable_v<_Tp>, "std::atomic_ref<T> requires that 'T' be a trivially copyable type");
|
||||
|
||||
using __base = __atomic_ref_base<_Tp>;
|
||||
using __base _LIBCPP_NODEBUG = __atomic_ref_base<_Tp>;
|
||||
|
||||
_LIBCPP_HIDE_FROM_ABI explicit atomic_ref(_Tp& __obj) : __base(__obj) {
|
||||
_LIBCPP_ASSERT_ARGUMENT_WITHIN_DOMAIN(
|
||||
@ -259,7 +259,7 @@ struct atomic_ref : public __atomic_ref_base<_Tp> {
|
||||
template <class _Tp>
|
||||
requires(std::integral<_Tp> && !std::same_as<bool, _Tp>)
|
||||
struct atomic_ref<_Tp> : public __atomic_ref_base<_Tp> {
|
||||
using __base = __atomic_ref_base<_Tp>;
|
||||
using __base _LIBCPP_NODEBUG = __atomic_ref_base<_Tp>;
|
||||
|
||||
using difference_type = __base::value_type;
|
||||
|
||||
@ -305,7 +305,7 @@ struct atomic_ref<_Tp> : public __atomic_ref_base<_Tp> {
|
||||
template <class _Tp>
|
||||
requires std::floating_point<_Tp>
|
||||
struct atomic_ref<_Tp> : public __atomic_ref_base<_Tp> {
|
||||
using __base = __atomic_ref_base<_Tp>;
|
||||
using __base _LIBCPP_NODEBUG = __atomic_ref_base<_Tp>;
|
||||
|
||||
using difference_type = __base::value_type;
|
||||
|
||||
@ -344,7 +344,7 @@ struct atomic_ref<_Tp> : public __atomic_ref_base<_Tp> {
|
||||
|
||||
template <class _Tp>
|
||||
struct atomic_ref<_Tp*> : public __atomic_ref_base<_Tp*> {
|
||||
using __base = __atomic_ref_base<_Tp*>;
|
||||
using __base _LIBCPP_NODEBUG = __atomic_ref_base<_Tp*>;
|
||||
|
||||
using difference_type = ptrdiff_t;
|
||||
|
||||
|
@ -81,7 +81,7 @@ struct __atomic_wait_backoff_impl {
|
||||
_Poll __poll_;
|
||||
memory_order __order_;
|
||||
|
||||
using __waitable_traits = __atomic_waitable_traits<__decay_t<_AtomicWaitable> >;
|
||||
using __waitable_traits _LIBCPP_NODEBUG = __atomic_waitable_traits<__decay_t<_AtomicWaitable> >;
|
||||
|
||||
_LIBCPP_AVAILABILITY_SYNC
|
||||
_LIBCPP_HIDE_FROM_ABI bool
|
||||
|
@ -20,12 +20,12 @@
|
||||
_LIBCPP_BEGIN_NAMESPACE_STD
|
||||
|
||||
#if defined(__linux__) || (defined(_AIX) && !defined(__64BIT__))
|
||||
using __cxx_contention_t = int32_t;
|
||||
using __cxx_contention_t _LIBCPP_NODEBUG = int32_t;
|
||||
#else
|
||||
using __cxx_contention_t = int64_t;
|
||||
using __cxx_contention_t _LIBCPP_NODEBUG = int64_t;
|
||||
#endif // __linux__ || (_AIX && !__64BIT__)
|
||||
|
||||
using __cxx_atomic_contention_t = __cxx_atomic_impl<__cxx_contention_t>;
|
||||
using __cxx_atomic_contention_t _LIBCPP_NODEBUG = __cxx_atomic_impl<__cxx_contention_t>;
|
||||
|
||||
_LIBCPP_END_NAMESPACE_STD
|
||||
|
||||
|
@ -24,7 +24,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD
|
||||
// to pin the underlying type in C++20.
|
||||
enum __legacy_memory_order { __mo_relaxed, __mo_consume, __mo_acquire, __mo_release, __mo_acq_rel, __mo_seq_cst };
|
||||
|
||||
using __memory_order_underlying_t = underlying_type<__legacy_memory_order>::type;
|
||||
using __memory_order_underlying_t _LIBCPP_NODEBUG = underlying_type<__legacy_memory_order>::type;
|
||||
|
||||
#if _LIBCPP_STD_VER >= 20
|
||||
|
||||
|
@ -43,8 +43,8 @@ struct __has_storage_type {
|
||||
|
||||
template <class _Cp, bool = __has_storage_type<_Cp>::value>
|
||||
class __bit_reference {
|
||||
using __storage_type = typename _Cp::__storage_type;
|
||||
using __storage_pointer = typename _Cp::__storage_pointer;
|
||||
using __storage_type _LIBCPP_NODEBUG = typename _Cp::__storage_type;
|
||||
using __storage_pointer _LIBCPP_NODEBUG = typename _Cp::__storage_pointer;
|
||||
|
||||
__storage_pointer __seg_;
|
||||
__storage_type __mask_;
|
||||
@ -55,7 +55,7 @@ class __bit_reference {
|
||||
friend class __bit_iterator<_Cp, false>;
|
||||
|
||||
public:
|
||||
using __container = typename _Cp::__self;
|
||||
using __container _LIBCPP_NODEBUG = typename _Cp::__self;
|
||||
|
||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_reference(const __bit_reference&) = default;
|
||||
|
||||
@ -135,8 +135,8 @@ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void swap(bool& __x,
|
||||
|
||||
template <class _Cp>
|
||||
class __bit_const_reference {
|
||||
using __storage_type = typename _Cp::__storage_type;
|
||||
using __storage_pointer = typename _Cp::__const_storage_pointer;
|
||||
using __storage_type _LIBCPP_NODEBUG = typename _Cp::__storage_type;
|
||||
using __storage_pointer _LIBCPP_NODEBUG = typename _Cp::__const_storage_pointer;
|
||||
|
||||
__storage_pointer __seg_;
|
||||
__storage_type __mask_;
|
||||
@ -145,7 +145,7 @@ class __bit_const_reference {
|
||||
friend class __bit_iterator<_Cp, true>;
|
||||
|
||||
public:
|
||||
using __container = typename _Cp::__self;
|
||||
using __container _LIBCPP_NODEBUG = typename _Cp::__self;
|
||||
|
||||
_LIBCPP_HIDE_FROM_ABI __bit_const_reference(const __bit_const_reference&) = default;
|
||||
__bit_const_reference& operator=(const __bit_const_reference&) = delete;
|
||||
@ -587,10 +587,10 @@ inline _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cr, false> swap_ranges(
|
||||
|
||||
template <class _Cp>
|
||||
struct __bit_array {
|
||||
using difference_type = typename _Cp::difference_type;
|
||||
using __storage_type = typename _Cp::__storage_type;
|
||||
using __storage_pointer = typename _Cp::__storage_pointer;
|
||||
using iterator = typename _Cp::iterator;
|
||||
using difference_type _LIBCPP_NODEBUG = typename _Cp::difference_type;
|
||||
using __storage_type _LIBCPP_NODEBUG = typename _Cp::__storage_type;
|
||||
using __storage_pointer _LIBCPP_NODEBUG = typename _Cp::__storage_pointer;
|
||||
using iterator _LIBCPP_NODEBUG = typename _Cp::iterator;
|
||||
|
||||
static const unsigned __bits_per_word = _Cp::__bits_per_word;
|
||||
static const unsigned _Np = 4;
|
||||
@ -790,8 +790,8 @@ public:
|
||||
using iterator_category = random_access_iterator_tag;
|
||||
|
||||
private:
|
||||
using __storage_type = typename _Cp::__storage_type;
|
||||
using __storage_pointer =
|
||||
using __storage_type _LIBCPP_NODEBUG = typename _Cp::__storage_type;
|
||||
using __storage_pointer _LIBCPP_NODEBUG =
|
||||
__conditional_t<_IsConst, typename _Cp::__const_storage_pointer, typename _Cp::__storage_pointer>;
|
||||
|
||||
static const unsigned __bits_per_word = _Cp::__bits_per_word;
|
||||
|
@ -711,7 +711,7 @@ public:
|
||||
template <class _Duration, __fmt_char_type _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<chrono::sys_time<_Duration>, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -722,7 +722,7 @@ public:
|
||||
template <class _Duration, __fmt_char_type _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<chrono::file_time<_Duration>, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -733,7 +733,7 @@ public:
|
||||
template <class _Duration, __fmt_char_type _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<chrono::local_time<_Duration>, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -745,7 +745,7 @@ public:
|
||||
template <class _Rep, class _Period, __fmt_char_type _CharT>
|
||||
struct formatter<chrono::duration<_Rep, _Period>, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -767,7 +767,7 @@ public:
|
||||
template <__fmt_char_type _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<chrono::day, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -778,7 +778,7 @@ public:
|
||||
template <__fmt_char_type _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<chrono::month, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -789,7 +789,7 @@ public:
|
||||
template <__fmt_char_type _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<chrono::year, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -800,7 +800,7 @@ public:
|
||||
template <__fmt_char_type _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<chrono::weekday, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -811,7 +811,7 @@ public:
|
||||
template <__fmt_char_type _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<chrono::weekday_indexed, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -822,7 +822,7 @@ public:
|
||||
template <__fmt_char_type _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<chrono::weekday_last, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -833,7 +833,7 @@ public:
|
||||
template <__fmt_char_type _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<chrono::month_day, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -844,7 +844,7 @@ public:
|
||||
template <__fmt_char_type _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<chrono::month_day_last, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -855,7 +855,7 @@ public:
|
||||
template <__fmt_char_type _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<chrono::month_weekday, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -866,7 +866,7 @@ public:
|
||||
template <__fmt_char_type _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<chrono::month_weekday_last, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -877,7 +877,7 @@ public:
|
||||
template <__fmt_char_type _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<chrono::year_month, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -888,7 +888,7 @@ public:
|
||||
template <__fmt_char_type _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<chrono::year_month_day, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -899,7 +899,7 @@ public:
|
||||
template <__fmt_char_type _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<chrono::year_month_day_last, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -910,7 +910,7 @@ public:
|
||||
template <__fmt_char_type _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<chrono::year_month_weekday, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -921,7 +921,7 @@ public:
|
||||
template <__fmt_char_type _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<chrono::year_month_weekday_last, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -932,7 +932,7 @@ public:
|
||||
template <class _Duration, __fmt_char_type _CharT>
|
||||
struct formatter<chrono::hh_mm_ss<_Duration>, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -944,7 +944,7 @@ public:
|
||||
template <__fmt_char_type _CharT>
|
||||
struct formatter<chrono::sys_info, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -955,7 +955,7 @@ public:
|
||||
template <__fmt_char_type _CharT>
|
||||
struct formatter<chrono::local_info, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
@ -968,7 +968,7 @@ public:
|
||||
template <class _Duration, class _TimeZonePtr, __fmt_char_type _CharT>
|
||||
struct formatter<chrono::zoned_time<_Duration, _TimeZonePtr>, _CharT> : public __formatter_chrono<_CharT> {
|
||||
public:
|
||||
using _Base = __formatter_chrono<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
|
||||
|
||||
template <class _ParseContext>
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) {
|
||||
|
@ -30,7 +30,7 @@ template <class _Duration>
|
||||
class hh_mm_ss {
|
||||
private:
|
||||
static_assert(__is_duration_v<_Duration>, "template parameter of hh_mm_ss must be a std::chrono::duration");
|
||||
using __CommonType = common_type_t<_Duration, chrono::seconds>;
|
||||
using __CommonType _LIBCPP_NODEBUG = common_type_t<_Duration, chrono::seconds>;
|
||||
|
||||
_LIBCPP_HIDE_FROM_ABI static constexpr uint64_t __pow10(unsigned __exp) {
|
||||
uint64_t __ret = 1;
|
||||
|
@ -140,7 +140,7 @@ _LIBCPP_HIDE_FROM_ABI constexpr void __validate_time_zone(__flags __flags) {
|
||||
|
||||
template <class _CharT>
|
||||
class _LIBCPP_TEMPLATE_VIS __parser_chrono {
|
||||
using _ConstIterator = typename basic_format_parse_context<_CharT>::const_iterator;
|
||||
using _ConstIterator _LIBCPP_NODEBUG = typename basic_format_parse_context<_CharT>::const_iterator;
|
||||
|
||||
public:
|
||||
template <class _ParseContext>
|
||||
|
@ -66,7 +66,7 @@ class zoned_time {
|
||||
// Using these constraints in the code causes the compiler to give an
|
||||
// error that the constraint depends on itself. To avoid that issue use
|
||||
// the fact it is possible to create this object from a _TimeZonePtr.
|
||||
using __traits = zoned_traits<_TimeZonePtr>;
|
||||
using __traits _LIBCPP_NODEBUG = zoned_traits<_TimeZonePtr>;
|
||||
|
||||
public:
|
||||
using duration = common_type_t<_Duration, seconds>;
|
||||
@ -186,7 +186,7 @@ template <class _Duration>
|
||||
zoned_time(sys_time<_Duration>) -> zoned_time<common_type_t<_Duration, seconds>>;
|
||||
|
||||
template <class _TimeZonePtrOrName>
|
||||
using __time_zone_representation =
|
||||
using __time_zone_representation _LIBCPP_NODEBUG =
|
||||
conditional_t<is_convertible_v<_TimeZonePtrOrName, string_view>,
|
||||
const time_zone*,
|
||||
remove_cvref_t<_TimeZonePtrOrName>>;
|
||||
|
@ -120,7 +120,7 @@ inline constexpr partial_ordering partial_ordering::greater(_PartialOrdResult::_
|
||||
inline constexpr partial_ordering partial_ordering::unordered(_PartialOrdResult::__unordered);
|
||||
|
||||
class weak_ordering {
|
||||
using _ValueT = signed char;
|
||||
using _ValueT _LIBCPP_NODEBUG = signed char;
|
||||
|
||||
_LIBCPP_HIDE_FROM_ABI explicit constexpr weak_ordering(_OrdResult __v) noexcept : __value_(_ValueT(__v)) {}
|
||||
|
||||
@ -190,7 +190,7 @@ inline constexpr weak_ordering weak_ordering::equivalent(_OrdResult::__equiv);
|
||||
inline constexpr weak_ordering weak_ordering::greater(_OrdResult::__greater);
|
||||
|
||||
class strong_ordering {
|
||||
using _ValueT = signed char;
|
||||
using _ValueT _LIBCPP_NODEBUG = signed char;
|
||||
|
||||
_LIBCPP_HIDE_FROM_ABI explicit constexpr strong_ordering(_OrdResult __v) noexcept : __value_(_ValueT(__v)) {}
|
||||
|
||||
|
@ -43,7 +43,8 @@ _LIBCPP_HIDE_FROM_ABI inline constexpr auto __synth_three_way = []<class _Tp, cl
|
||||
};
|
||||
|
||||
template <class _Tp, class _Up = _Tp>
|
||||
using __synth_three_way_result = decltype(std::__synth_three_way(std::declval<_Tp&>(), std::declval<_Up&>()));
|
||||
using __synth_three_way_result _LIBCPP_NODEBUG =
|
||||
decltype(std::__synth_three_way(std::declval<_Tp&>(), std::declval<_Up&>()));
|
||||
|
||||
#endif // _LIBCPP_STD_VER >= 20
|
||||
|
||||
|
@ -66,7 +66,7 @@ class _LIBCPP_EXPORTED_FROM_ABI exception_ptr {
|
||||
|
||||
public:
|
||||
// exception_ptr is basically a COW string.
|
||||
using __trivially_relocatable = exception_ptr;
|
||||
using __trivially_relocatable _LIBCPP_NODEBUG = exception_ptr;
|
||||
|
||||
_LIBCPP_HIDE_FROM_ABI exception_ptr() _NOEXCEPT : __ptr_() {}
|
||||
_LIBCPP_HIDE_FROM_ABI exception_ptr(nullptr_t) _NOEXCEPT : __ptr_() {}
|
||||
|
@ -459,14 +459,14 @@ class expected : private __expected_base<_Tp, _Err> {
|
||||
template <class _Up, class _OtherErr>
|
||||
friend class expected;
|
||||
|
||||
using __base = __expected_base<_Tp, _Err>;
|
||||
using __base _LIBCPP_NODEBUG = __expected_base<_Tp, _Err>;
|
||||
|
||||
public:
|
||||
using value_type = _Tp;
|
||||
using error_type = _Err;
|
||||
using unexpected_type = unexpected<_Err>;
|
||||
|
||||
using __trivially_relocatable =
|
||||
using __trivially_relocatable _LIBCPP_NODEBUG =
|
||||
__conditional_t<__libcpp_is_trivially_relocatable<_Tp>::value && __libcpp_is_trivially_relocatable<_Err>::value,
|
||||
expected,
|
||||
void>;
|
||||
@ -505,7 +505,7 @@ public:
|
||||
|
||||
private:
|
||||
template <class _Up, class _OtherErr, class _UfQual, class _OtherErrQual>
|
||||
using __can_convert = _And<
|
||||
using __can_convert _LIBCPP_NODEBUG = _And<
|
||||
is_constructible<_Tp, _UfQual>,
|
||||
is_constructible<_Err, _OtherErrQual>,
|
||||
_If<_Not<is_same<remove_cv_t<_Tp>, bool>>::value,
|
||||
@ -1363,7 +1363,7 @@ class expected<_Tp, _Err> : private __expected_void_base<_Err> {
|
||||
friend class expected;
|
||||
|
||||
template <class _Up, class _OtherErr, class _OtherErrQual>
|
||||
using __can_convert =
|
||||
using __can_convert _LIBCPP_NODEBUG =
|
||||
_And< is_void<_Up>,
|
||||
is_constructible<_Err, _OtherErrQual>,
|
||||
_Not<is_constructible<unexpected<_Err>, expected<_Up, _OtherErr>&>>,
|
||||
@ -1371,7 +1371,7 @@ class expected<_Tp, _Err> : private __expected_void_base<_Err> {
|
||||
_Not<is_constructible<unexpected<_Err>, const expected<_Up, _OtherErr>&>>,
|
||||
_Not<is_constructible<unexpected<_Err>, const expected<_Up, _OtherErr>>>>;
|
||||
|
||||
using __base = __expected_void_base<_Err>;
|
||||
using __base _LIBCPP_NODEBUG = __expected_void_base<_Err>;
|
||||
|
||||
public:
|
||||
using value_type = _Tp;
|
||||
|
@ -48,7 +48,7 @@ template <class _Err>
|
||||
struct __is_std_unexpected<unexpected<_Err>> : true_type {};
|
||||
|
||||
template <class _Tp>
|
||||
using __valid_std_unexpected = _BoolConstant< //
|
||||
using __valid_std_unexpected _LIBCPP_NODEBUG = _BoolConstant< //
|
||||
is_object_v<_Tp> && //
|
||||
!is_array_v<_Tp> && //
|
||||
!__is_std_unexpected<_Tp>::value && //
|
||||
|
@ -52,29 +52,29 @@ struct __can_convert_char<const _Tp> : public __can_convert_char<_Tp> {};
|
||||
template <>
|
||||
struct __can_convert_char<char> {
|
||||
static const bool value = true;
|
||||
using __char_type = char;
|
||||
using __char_type _LIBCPP_NODEBUG = char;
|
||||
};
|
||||
template <>
|
||||
struct __can_convert_char<wchar_t> {
|
||||
static const bool value = true;
|
||||
using __char_type = wchar_t;
|
||||
using __char_type _LIBCPP_NODEBUG = wchar_t;
|
||||
};
|
||||
# if _LIBCPP_HAS_CHAR8_T
|
||||
template <>
|
||||
struct __can_convert_char<char8_t> {
|
||||
static const bool value = true;
|
||||
using __char_type = char8_t;
|
||||
using __char_type _LIBCPP_NODEBUG = char8_t;
|
||||
};
|
||||
# endif
|
||||
template <>
|
||||
struct __can_convert_char<char16_t> {
|
||||
static const bool value = true;
|
||||
using __char_type = char16_t;
|
||||
using __char_type _LIBCPP_NODEBUG = char16_t;
|
||||
};
|
||||
template <>
|
||||
struct __can_convert_char<char32_t> {
|
||||
static const bool value = true;
|
||||
using __char_type = char32_t;
|
||||
using __char_type _LIBCPP_NODEBUG = char32_t;
|
||||
};
|
||||
|
||||
template <class _ECharT, __enable_if_t<__can_convert_char<_ECharT>::value, int> = 0>
|
||||
@ -95,7 +95,7 @@ typedef string __u8_string;
|
||||
struct _NullSentinel {};
|
||||
|
||||
template <class _Tp>
|
||||
using _Void = void;
|
||||
using _Void _LIBCPP_NODEBUG = void;
|
||||
|
||||
template <class _Tp, class = void>
|
||||
struct __is_pathable_string : public false_type {};
|
||||
@ -104,7 +104,7 @@ template <class _ECharT, class _Traits, class _Alloc>
|
||||
struct __is_pathable_string< basic_string<_ECharT, _Traits, _Alloc>,
|
||||
_Void<typename __can_convert_char<_ECharT>::__char_type> >
|
||||
: public __can_convert_char<_ECharT> {
|
||||
using _Str = basic_string<_ECharT, _Traits, _Alloc>;
|
||||
using _Str _LIBCPP_NODEBUG = basic_string<_ECharT, _Traits, _Alloc>;
|
||||
|
||||
_LIBCPP_HIDE_FROM_ABI static _ECharT const* __range_begin(_Str const& __s) { return __s.data(); }
|
||||
|
||||
@ -117,7 +117,7 @@ template <class _ECharT, class _Traits>
|
||||
struct __is_pathable_string< basic_string_view<_ECharT, _Traits>,
|
||||
_Void<typename __can_convert_char<_ECharT>::__char_type> >
|
||||
: public __can_convert_char<_ECharT> {
|
||||
using _Str = basic_string_view<_ECharT, _Traits>;
|
||||
using _Str _LIBCPP_NODEBUG = basic_string_view<_ECharT, _Traits>;
|
||||
|
||||
_LIBCPP_HIDE_FROM_ABI static _ECharT const* __range_begin(_Str const& __s) { return __s.data(); }
|
||||
|
||||
@ -157,7 +157,7 @@ struct __is_pathable_iter<
|
||||
true,
|
||||
_Void<typename __can_convert_char< typename iterator_traits<_Iter>::value_type>::__char_type> >
|
||||
: __can_convert_char<typename iterator_traits<_Iter>::value_type> {
|
||||
using _ECharT = typename iterator_traits<_Iter>::value_type;
|
||||
using _ECharT _LIBCPP_NODEBUG = typename iterator_traits<_Iter>::value_type;
|
||||
|
||||
_LIBCPP_HIDE_FROM_ABI static _Iter __range_begin(_Iter __b) { return __b; }
|
||||
|
||||
@ -380,13 +380,13 @@ struct _PathExport<char8_t> {
|
||||
|
||||
class _LIBCPP_EXPORTED_FROM_ABI path {
|
||||
template <class _SourceOrIter, class _Tp = path&>
|
||||
using _EnableIfPathable = __enable_if_t<__is_pathable<_SourceOrIter>::value, _Tp>;
|
||||
using _EnableIfPathable _LIBCPP_NODEBUG = __enable_if_t<__is_pathable<_SourceOrIter>::value, _Tp>;
|
||||
|
||||
template <class _Tp>
|
||||
using _SourceChar = typename __is_pathable<_Tp>::__char_type;
|
||||
using _SourceChar _LIBCPP_NODEBUG = typename __is_pathable<_Tp>::__char_type;
|
||||
|
||||
template <class _Tp>
|
||||
using _SourceCVT = _PathCVT<_SourceChar<_Tp> >;
|
||||
using _SourceCVT _LIBCPP_NODEBUG = _PathCVT<_SourceChar<_Tp> >;
|
||||
|
||||
public:
|
||||
# if defined(_LIBCPP_WIN32API)
|
||||
|
@ -90,7 +90,7 @@ class flat_map {
|
||||
static_assert(!is_same_v<_MappedContainer, std::vector<bool>>, "vector<bool> is not a sequence container");
|
||||
|
||||
template <bool _Const>
|
||||
using __iterator = __key_value_iterator<flat_map, _KeyContainer, _MappedContainer, _Const>;
|
||||
using __iterator _LIBCPP_NODEBUG = __key_value_iterator<flat_map, _KeyContainer, _MappedContainer, _Const>;
|
||||
|
||||
public:
|
||||
// types
|
||||
|
@ -41,9 +41,9 @@ _LIBCPP_BEGIN_NAMESPACE_STD
|
||||
template <class _Owner, class _KeyContainer, class _MappedContainer, bool _Const>
|
||||
struct __key_value_iterator {
|
||||
private:
|
||||
using __key_iterator = ranges::iterator_t<const _KeyContainer>;
|
||||
using __mapped_iterator = ranges::iterator_t<__maybe_const<_Const, _MappedContainer>>;
|
||||
using __reference = _If<_Const, typename _Owner::const_reference, typename _Owner::reference>;
|
||||
using __key_iterator _LIBCPP_NODEBUG = ranges::iterator_t<const _KeyContainer>;
|
||||
using __mapped_iterator _LIBCPP_NODEBUG = ranges::iterator_t<__maybe_const<_Const, _MappedContainer>>;
|
||||
using __reference _LIBCPP_NODEBUG = _If<_Const, typename _Owner::const_reference, typename _Owner::reference>;
|
||||
|
||||
struct __arrow_proxy {
|
||||
__reference __ref_;
|
||||
|
@ -322,7 +322,7 @@ struct _LIBCPP_TEMPLATE_VIS __back_insert_iterator_container<back_insert_iterato
|
||||
template <class _Container>
|
||||
class _LIBCPP_TEMPLATE_VIS __writer_container {
|
||||
public:
|
||||
using _CharT = typename _Container::value_type;
|
||||
using _CharT _LIBCPP_NODEBUG = typename _Container::value_type;
|
||||
|
||||
_LIBCPP_HIDE_FROM_ABI explicit __writer_container(back_insert_iterator<_Container> __out_it)
|
||||
: __container_{__out_it.__get_container()} {}
|
||||
@ -340,7 +340,7 @@ private:
|
||||
/// Selects the type of the writer used for the output iterator.
|
||||
template <class _OutIt, class _CharT>
|
||||
class _LIBCPP_TEMPLATE_VIS __writer_selector {
|
||||
using _Container = typename __back_insert_iterator_container<_OutIt>::type;
|
||||
using _Container _LIBCPP_NODEBUG = typename __back_insert_iterator_container<_OutIt>::type;
|
||||
|
||||
public:
|
||||
using type =
|
||||
@ -355,7 +355,7 @@ public:
|
||||
template <class _OutIt, __fmt_char_type _CharT>
|
||||
requires(output_iterator<_OutIt, const _CharT&>)
|
||||
class _LIBCPP_TEMPLATE_VIS __format_buffer {
|
||||
using _Storage =
|
||||
using _Storage _LIBCPP_NODEBUG =
|
||||
conditional_t<__enable_direct_output<_OutIt, _CharT>, __direct_storage<_CharT>, __internal_storage<_CharT>>;
|
||||
|
||||
public:
|
||||
@ -408,7 +408,7 @@ private:
|
||||
template <class _OutIt, __fmt_char_type _CharT, bool>
|
||||
requires(output_iterator<_OutIt, const _CharT&>)
|
||||
struct _LIBCPP_TEMPLATE_VIS __format_to_n_buffer_base {
|
||||
using _Size = iter_difference_t<_OutIt>;
|
||||
using _Size _LIBCPP_NODEBUG = iter_difference_t<_OutIt>;
|
||||
|
||||
public:
|
||||
_LIBCPP_HIDE_FROM_ABI explicit __format_to_n_buffer_base(_OutIt __out_it, _Size __max_size)
|
||||
@ -438,7 +438,7 @@ protected:
|
||||
template <class _OutIt, __fmt_char_type _CharT>
|
||||
requires(output_iterator<_OutIt, const _CharT&>)
|
||||
class _LIBCPP_TEMPLATE_VIS __format_to_n_buffer_base<_OutIt, _CharT, true> {
|
||||
using _Size = iter_difference_t<_OutIt>;
|
||||
using _Size _LIBCPP_NODEBUG = iter_difference_t<_OutIt>;
|
||||
|
||||
public:
|
||||
_LIBCPP_HIDE_FROM_ABI explicit __format_to_n_buffer_base(_OutIt __out_it, _Size __max_size)
|
||||
@ -489,8 +489,8 @@ template <class _OutIt, __fmt_char_type _CharT>
|
||||
requires(output_iterator<_OutIt, const _CharT&>)
|
||||
struct _LIBCPP_TEMPLATE_VIS __format_to_n_buffer final
|
||||
: public __format_to_n_buffer_base< _OutIt, _CharT, __enable_direct_output<_OutIt, _CharT>> {
|
||||
using _Base = __format_to_n_buffer_base<_OutIt, _CharT, __enable_direct_output<_OutIt, _CharT>>;
|
||||
using _Size = iter_difference_t<_OutIt>;
|
||||
using _Base _LIBCPP_NODEBUG = __format_to_n_buffer_base<_OutIt, _CharT, __enable_direct_output<_OutIt, _CharT>>;
|
||||
using _Size _LIBCPP_NODEBUG = iter_difference_t<_OutIt>;
|
||||
|
||||
public:
|
||||
_LIBCPP_HIDE_FROM_ABI explicit __format_to_n_buffer(_OutIt __out_it, _Size __max_size)
|
||||
@ -523,7 +523,7 @@ public:
|
||||
// would lead to a circular include with formatter for vector<bool>.
|
||||
template <__fmt_char_type _CharT>
|
||||
class _LIBCPP_TEMPLATE_VIS __retarget_buffer {
|
||||
using _Alloc = allocator<_CharT>;
|
||||
using _Alloc _LIBCPP_NODEBUG = allocator<_CharT>;
|
||||
|
||||
public:
|
||||
using value_type = _CharT;
|
||||
|
@ -44,7 +44,7 @@ concept __fmt_char_type =
|
||||
// (Note testing for (w)format_context would be a valid choice, but requires
|
||||
// selecting the proper one depending on the type of _CharT.)
|
||||
template <class _CharT>
|
||||
using __fmt_iter_for = _CharT*;
|
||||
using __fmt_iter_for _LIBCPP_NODEBUG = _CharT*;
|
||||
|
||||
template <class _Tp, class _Context, class _Formatter = typename _Context::template formatter_type<remove_const_t<_Tp>>>
|
||||
concept __formattable_with =
|
||||
|
@ -37,8 +37,8 @@ _LIBCPP_BEGIN_NAMESPACE_STD
|
||||
template <class _Adaptor, class _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS __formatter_container_adaptor {
|
||||
private:
|
||||
using __maybe_const_container = __fmt_maybe_const<typename _Adaptor::container_type, _CharT>;
|
||||
using __maybe_const_adaptor = __maybe_const<is_const_v<__maybe_const_container>, _Adaptor>;
|
||||
using __maybe_const_container _LIBCPP_NODEBUG = __fmt_maybe_const<typename _Adaptor::container_type, _CharT>;
|
||||
using __maybe_const_adaptor _LIBCPP_NODEBUG = __maybe_const<is_const_v<__maybe_const_container>, _Adaptor>;
|
||||
formatter<ranges::ref_view<__maybe_const_container>, _CharT> __underlying_;
|
||||
|
||||
public:
|
||||
|
@ -208,7 +208,7 @@ _LIBCPP_HIDE_FROM_ABI _Rp __visit_format_arg(_Visitor&& __vis, basic_format_arg<
|
||||
/// separate arrays.
|
||||
template <class _Context>
|
||||
class __basic_format_arg_value {
|
||||
using _CharT = typename _Context::char_type;
|
||||
using _CharT _LIBCPP_NODEBUG = typename _Context::char_type;
|
||||
|
||||
public:
|
||||
/// Contains the implementation for basic_format_arg::handle.
|
||||
|
@ -257,7 +257,7 @@ struct _LIBCPP_TEMPLATE_VIS __format_arg_store {
|
||||
}
|
||||
}
|
||||
|
||||
using _Storage =
|
||||
using _Storage _LIBCPP_NODEBUG =
|
||||
conditional_t<__format::__use_packed_format_arg_store(sizeof...(_Args)),
|
||||
__format::__packed_format_arg_store<_Context, sizeof...(_Args)>,
|
||||
__format::__unpacked_format_arg_store<_Context, sizeof...(_Args)>>;
|
||||
|
@ -379,7 +379,7 @@ struct _LIBCPP_TEMPLATE_VIS basic_format_string {
|
||||
private:
|
||||
basic_string_view<_CharT> __str_;
|
||||
|
||||
using _Context = __format::__compile_time_basic_format_context<_CharT>;
|
||||
using _Context _LIBCPP_NODEBUG = __format::__compile_time_basic_format_context<_CharT>;
|
||||
|
||||
static constexpr array<__format::__arg_t, sizeof...(_Args)> __types_{
|
||||
__format::__determine_arg_t<_Context, remove_cvref_t<_Args>>()...};
|
||||
|
@ -141,7 +141,7 @@ struct __traits<double> {
|
||||
/// on the stack or the heap.
|
||||
template <floating_point _Fp>
|
||||
class _LIBCPP_TEMPLATE_VIS __float_buffer {
|
||||
using _Traits = __traits<_Fp>;
|
||||
using _Traits _LIBCPP_NODEBUG = __traits<_Fp>;
|
||||
|
||||
public:
|
||||
// TODO FMT Improve this constructor to do a better estimate.
|
||||
|
@ -59,7 +59,7 @@ public:
|
||||
// Formatter const char*.
|
||||
template <__fmt_char_type _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<const _CharT*, _CharT> : public __formatter_string<_CharT> {
|
||||
using _Base = __formatter_string<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_string<_CharT>;
|
||||
|
||||
template <class _FormatContext>
|
||||
_LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(const _CharT* __str, _FormatContext& __ctx) const {
|
||||
@ -78,7 +78,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<const _CharT*, _CharT> : public __formatte
|
||||
// Formatter char*.
|
||||
template <__fmt_char_type _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<_CharT*, _CharT> : public formatter<const _CharT*, _CharT> {
|
||||
using _Base = formatter<const _CharT*, _CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = formatter<const _CharT*, _CharT>;
|
||||
|
||||
template <class _FormatContext>
|
||||
_LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(_CharT* __str, _FormatContext& __ctx) const {
|
||||
@ -89,7 +89,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<_CharT*, _CharT> : public formatter<const
|
||||
// Formatter char[].
|
||||
template <__fmt_char_type _CharT, size_t _Size>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<_CharT[_Size], _CharT> : public __formatter_string<_CharT> {
|
||||
using _Base = __formatter_string<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_string<_CharT>;
|
||||
|
||||
template <class _FormatContext>
|
||||
_LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator
|
||||
@ -102,7 +102,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<_CharT[_Size], _CharT> : public __formatte
|
||||
template <__fmt_char_type _CharT, class _Traits, class _Allocator>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<basic_string<_CharT, _Traits, _Allocator>, _CharT>
|
||||
: public __formatter_string<_CharT> {
|
||||
using _Base = __formatter_string<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_string<_CharT>;
|
||||
|
||||
template <class _FormatContext>
|
||||
_LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator
|
||||
@ -115,7 +115,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<basic_string<_CharT, _Traits, _Allocator>,
|
||||
// Formatter std::string_view.
|
||||
template <__fmt_char_type _CharT, class _Traits>
|
||||
struct _LIBCPP_TEMPLATE_VIS formatter<basic_string_view<_CharT, _Traits>, _CharT> : public __formatter_string<_CharT> {
|
||||
using _Base = __formatter_string<_CharT>;
|
||||
using _Base _LIBCPP_NODEBUG = __formatter_string<_CharT>;
|
||||
|
||||
template <class _FormatContext>
|
||||
_LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator
|
||||
|
@ -40,7 +40,7 @@ concept __const_formattable_range =
|
||||
ranges::input_range<const _Rp> && formattable<ranges::range_reference_t<const _Rp>, _CharT>;
|
||||
|
||||
template <class _Rp, class _CharT>
|
||||
using __fmt_maybe_const = conditional_t<__const_formattable_range<_Rp, _CharT>, const _Rp, _Rp>;
|
||||
using __fmt_maybe_const _LIBCPP_NODEBUG = conditional_t<__const_formattable_range<_Rp, _CharT>, const _Rp, _Rp>;
|
||||
|
||||
_LIBCPP_DIAGNOSTIC_PUSH
|
||||
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wshadow")
|
||||
@ -95,7 +95,7 @@ struct _LIBCPP_TEMPLATE_VIS __range_default_formatter;
|
||||
template <ranges::input_range _Rp, class _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS __range_default_formatter<range_format::sequence, _Rp, _CharT> {
|
||||
private:
|
||||
using __maybe_const_r = __fmt_maybe_const<_Rp, _CharT>;
|
||||
using __maybe_const_r _LIBCPP_NODEBUG = __fmt_maybe_const<_Rp, _CharT>;
|
||||
range_formatter<remove_cvref_t<ranges::range_reference_t<__maybe_const_r>>, _CharT> __underlying_;
|
||||
|
||||
public:
|
||||
@ -122,8 +122,8 @@ public:
|
||||
template <ranges::input_range _Rp, class _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS __range_default_formatter<range_format::map, _Rp, _CharT> {
|
||||
private:
|
||||
using __maybe_const_map = __fmt_maybe_const<_Rp, _CharT>;
|
||||
using __element_type = remove_cvref_t<ranges::range_reference_t<__maybe_const_map>>;
|
||||
using __maybe_const_map _LIBCPP_NODEBUG = __fmt_maybe_const<_Rp, _CharT>;
|
||||
using __element_type _LIBCPP_NODEBUG = remove_cvref_t<ranges::range_reference_t<__maybe_const_map>>;
|
||||
range_formatter<__element_type, _CharT> __underlying_;
|
||||
|
||||
public:
|
||||
@ -150,8 +150,8 @@ public:
|
||||
template <ranges::input_range _Rp, class _CharT>
|
||||
struct _LIBCPP_TEMPLATE_VIS __range_default_formatter<range_format::set, _Rp, _CharT> {
|
||||
private:
|
||||
using __maybe_const_set = __fmt_maybe_const<_Rp, _CharT>;
|
||||
using __element_type = remove_cvref_t<ranges::range_reference_t<__maybe_const_set>>;
|
||||
using __maybe_const_set _LIBCPP_NODEBUG = __fmt_maybe_const<_Rp, _CharT>;
|
||||
using __element_type _LIBCPP_NODEBUG = remove_cvref_t<ranges::range_reference_t<__maybe_const_set>>;
|
||||
range_formatter<__element_type, _CharT> __underlying_;
|
||||
|
||||
public:
|
||||
|
@ -123,7 +123,7 @@ class __code_point_view;
|
||||
/// UTF-8 specialization.
|
||||
template <>
|
||||
class __code_point_view<char> {
|
||||
using _Iterator = basic_string_view<char>::const_iterator;
|
||||
using _Iterator _LIBCPP_NODEBUG = basic_string_view<char>::const_iterator;
|
||||
|
||||
public:
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr explicit __code_point_view(_Iterator __first, _Iterator __last)
|
||||
@ -249,7 +249,7 @@ _LIBCPP_HIDE_FROM_ABI constexpr bool __is_surrogate_pair_low(wchar_t __value) {
|
||||
/// - 4 UTF-32 (for example Linux)
|
||||
template <>
|
||||
class __code_point_view<wchar_t> {
|
||||
using _Iterator = typename basic_string_view<wchar_t>::const_iterator;
|
||||
using _Iterator _LIBCPP_NODEBUG = typename basic_string_view<wchar_t>::const_iterator;
|
||||
|
||||
public:
|
||||
static_assert(sizeof(wchar_t) == 2 || sizeof(wchar_t) == 4, "sizeof(wchar_t) has a not implemented value");
|
||||
@ -300,8 +300,8 @@ private:
|
||||
// This implements the extended rules see
|
||||
// https://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries
|
||||
class __extended_grapheme_cluster_break {
|
||||
using __EGC_property = __extended_grapheme_custer_property_boundary::__property;
|
||||
using __inCB_property = __indic_conjunct_break::__property;
|
||||
using __EGC_property _LIBCPP_NODEBUG = __extended_grapheme_custer_property_boundary::__property;
|
||||
using __inCB_property _LIBCPP_NODEBUG = __indic_conjunct_break::__property;
|
||||
|
||||
public:
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr explicit __extended_grapheme_cluster_break(char32_t __first_code_point)
|
||||
@ -527,7 +527,7 @@ private:
|
||||
/// Therefore only this code point is extracted.
|
||||
template <class _CharT>
|
||||
class __extended_grapheme_cluster_view {
|
||||
using _Iterator = typename basic_string_view<_CharT>::const_iterator;
|
||||
using _Iterator _LIBCPP_NODEBUG = typename basic_string_view<_CharT>::const_iterator;
|
||||
|
||||
public:
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr explicit __extended_grapheme_cluster_view(_Iterator __first, _Iterator __last)
|
||||
@ -572,7 +572,7 @@ __extended_grapheme_cluster_view(_Iterator, _Iterator) -> __extended_grapheme_cl
|
||||
// This makes it easier to write code agnostic of the _LIBCPP_HAS_UNICODE define.
|
||||
template <class _CharT>
|
||||
class __code_point_view {
|
||||
using _Iterator = typename basic_string_view<_CharT>::const_iterator;
|
||||
using _Iterator _LIBCPP_NODEBUG = typename basic_string_view<_CharT>::const_iterator;
|
||||
|
||||
public:
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr explicit __code_point_view(_Iterator __first, _Iterator __last)
|
||||
|
@ -42,11 +42,11 @@ struct __binary_function_keep_layout_base {
|
||||
_LIBCPP_DIAGNOSTIC_PUSH
|
||||
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wdeprecated-declarations")
|
||||
template <class _Arg1, class _Arg2, class _Result>
|
||||
using __binary_function = binary_function<_Arg1, _Arg2, _Result>;
|
||||
using __binary_function _LIBCPP_NODEBUG = binary_function<_Arg1, _Arg2, _Result>;
|
||||
_LIBCPP_DIAGNOSTIC_POP
|
||||
#else
|
||||
template <class _Arg1, class _Arg2, class _Result>
|
||||
using __binary_function = __binary_function_keep_layout_base<_Arg1, _Arg2, _Result>;
|
||||
using __binary_function _LIBCPP_NODEBUG = __binary_function_keep_layout_base<_Arg1, _Arg2, _Result>;
|
||||
#endif
|
||||
|
||||
_LIBCPP_END_NAMESPACE_STD
|
||||
|
@ -198,7 +198,7 @@ __apply_functor(_Fp& __f, _BoundArgs& __bound_args, __tuple_indices<_Indx...>, _
|
||||
template <class _Fp, class... _BoundArgs>
|
||||
class __bind : public __weak_result_type<__decay_t<_Fp> > {
|
||||
protected:
|
||||
using _Fd = __decay_t<_Fp>;
|
||||
using _Fd _LIBCPP_NODEBUG = __decay_t<_Fp>;
|
||||
typedef tuple<__decay_t<_BoundArgs>...> _Td;
|
||||
|
||||
private:
|
||||
|
@ -92,7 +92,7 @@ class _LIBCPP_TEMPLATE_VIS boyer_moore_searcher {
|
||||
private:
|
||||
using difference_type = typename std::iterator_traits<_RandomAccessIterator1>::difference_type;
|
||||
using value_type = typename std::iterator_traits<_RandomAccessIterator1>::value_type;
|
||||
using __skip_table_type =
|
||||
using __skip_table_type _LIBCPP_NODEBUG =
|
||||
_BMSkipTable<value_type,
|
||||
difference_type,
|
||||
_Hash,
|
||||
@ -223,7 +223,7 @@ class _LIBCPP_TEMPLATE_VIS boyer_moore_horspool_searcher {
|
||||
private:
|
||||
using difference_type = typename iterator_traits<_RandomAccessIterator1>::difference_type;
|
||||
using value_type = typename iterator_traits<_RandomAccessIterator1>::value_type;
|
||||
using __skip_table_type =
|
||||
using __skip_table_type _LIBCPP_NODEBUG =
|
||||
_BMSkipTable<value_type,
|
||||
difference_type,
|
||||
_Hash,
|
||||
|
@ -576,7 +576,7 @@ private:
|
||||
// Used to choose between perfect forwarding or pass-by-value. Pass-by-value is
|
||||
// faster for types that can be passed in registers.
|
||||
template <typename _Tp>
|
||||
using __fast_forward = __conditional_t<is_scalar<_Tp>::value, _Tp, _Tp&&>;
|
||||
using __fast_forward _LIBCPP_NODEBUG = __conditional_t<is_scalar<_Tp>::value, _Tp, _Tp&&>;
|
||||
|
||||
// __policy_invoker calls an instance of __alloc_func held in __policy_storage.
|
||||
|
||||
@ -847,7 +847,7 @@ class _LIBCPP_TEMPLATE_VIS function<_Rp(_ArgTypes...)>
|
||||
};
|
||||
|
||||
template <class _Fp>
|
||||
using _EnableIfLValueCallable = __enable_if_t<__callable<_Fp&>::value>;
|
||||
using _EnableIfLValueCallable _LIBCPP_NODEBUG = __enable_if_t<__callable<_Fp&>::value>;
|
||||
|
||||
public:
|
||||
typedef _Rp result_type;
|
||||
|
@ -94,7 +94,7 @@ public:
|
||||
|
||||
// __perfect_forward implements a perfect-forwarding call wrapper as explained in [func.require].
|
||||
template <class _Op, class... _Args>
|
||||
using __perfect_forward = __perfect_forward_impl<_Op, index_sequence_for<_Args...>, _Args...>;
|
||||
using __perfect_forward _LIBCPP_NODEBUG = __perfect_forward_impl<_Op, index_sequence_for<_Args...>, _Args...>;
|
||||
|
||||
#endif // _LIBCPP_STD_VER >= 17
|
||||
|
||||
|
@ -39,11 +39,11 @@ struct __unary_function_keep_layout_base {
|
||||
_LIBCPP_DIAGNOSTIC_PUSH
|
||||
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wdeprecated-declarations")
|
||||
template <class _Arg, class _Result>
|
||||
using __unary_function = unary_function<_Arg, _Result>;
|
||||
using __unary_function _LIBCPP_NODEBUG = unary_function<_Arg, _Result>;
|
||||
_LIBCPP_DIAGNOSTIC_POP
|
||||
#else
|
||||
template <class _Arg, class _Result>
|
||||
using __unary_function = __unary_function_keep_layout_base<_Arg, _Result>;
|
||||
using __unary_function _LIBCPP_NODEBUG = __unary_function_keep_layout_base<_Arg, _Result>;
|
||||
#endif
|
||||
|
||||
_LIBCPP_END_NAMESPACE_STD
|
||||
|
@ -111,8 +111,8 @@ struct __hash_node_base {
|
||||
template <class _Tp, class _VoidPtr>
|
||||
struct __hash_node : public __hash_node_base< __rebind_pointer_t<_VoidPtr, __hash_node<_Tp, _VoidPtr> > > {
|
||||
typedef _Tp __node_value_type;
|
||||
using _Base = __hash_node_base<__rebind_pointer_t<_VoidPtr, __hash_node<_Tp, _VoidPtr> > >;
|
||||
using __next_pointer = typename _Base::__next_pointer;
|
||||
using _Base _LIBCPP_NODEBUG = __hash_node_base<__rebind_pointer_t<_VoidPtr, __hash_node<_Tp, _VoidPtr> > >;
|
||||
using __next_pointer _LIBCPP_NODEBUG = typename _Base::__next_pointer;
|
||||
|
||||
size_t __hash_;
|
||||
|
||||
|
@ -31,8 +31,8 @@ struct __aliasing_iterator_wrapper {
|
||||
class __iterator {
|
||||
_BaseIter __base_ = nullptr;
|
||||
|
||||
using __iter_traits = iterator_traits<_BaseIter>;
|
||||
using __base_value_type = typename __iter_traits::value_type;
|
||||
using __iter_traits _LIBCPP_NODEBUG = iterator_traits<_BaseIter>;
|
||||
using __base_value_type _LIBCPP_NODEBUG = typename __iter_traits::value_type;
|
||||
|
||||
static_assert(__has_random_access_iterator_category<_BaseIter>::value,
|
||||
"The base iterator has to be a random access iterator!");
|
||||
@ -120,7 +120,7 @@ struct __aliasing_iterator_wrapper {
|
||||
|
||||
// This is required to avoid ADL instantiations on _BaseT
|
||||
template <class _BaseT, class _Alias>
|
||||
using __aliasing_iterator = typename __aliasing_iterator_wrapper<_BaseT, _Alias>::__iterator;
|
||||
using __aliasing_iterator _LIBCPP_NODEBUG = typename __aliasing_iterator_wrapper<_BaseT, _Alias>::__iterator;
|
||||
|
||||
_LIBCPP_END_NAMESPACE_STD
|
||||
|
||||
|
@ -67,10 +67,10 @@ template <class _In>
|
||||
concept indirectly_readable = __indirectly_readable_impl<remove_cvref_t<_In>>;
|
||||
|
||||
template <class _Tp>
|
||||
using __projected_iterator_t = typename _Tp::__projected_iterator;
|
||||
using __projected_iterator_t _LIBCPP_NODEBUG = typename _Tp::__projected_iterator;
|
||||
|
||||
template <class _Tp>
|
||||
using __projected_projection_t = typename _Tp::__projected_projection;
|
||||
using __projected_projection_t _LIBCPP_NODEBUG = typename _Tp::__projected_projection;
|
||||
|
||||
template <class _Tp>
|
||||
concept __specialization_of_projected = requires {
|
||||
@ -89,7 +89,7 @@ struct __indirect_value_t_impl<_Tp> {
|
||||
};
|
||||
|
||||
template <indirectly_readable _Tp>
|
||||
using __indirect_value_t = typename __indirect_value_t_impl<_Tp>::type;
|
||||
using __indirect_value_t _LIBCPP_NODEBUG = typename __indirect_value_t_impl<_Tp>::type;
|
||||
|
||||
template <indirectly_readable _Tp>
|
||||
using iter_common_reference_t = common_reference_t<iter_reference_t<_Tp>, __indirect_value_t<_Tp>>;
|
||||
@ -274,7 +274,7 @@ concept indirectly_copyable_storable =
|
||||
#endif // _LIBCPP_STD_VER >= 20
|
||||
|
||||
template <class _Tp>
|
||||
using __has_random_access_iterator_category_or_concept
|
||||
using __has_random_access_iterator_category_or_concept _LIBCPP_NODEBUG
|
||||
#if _LIBCPP_STD_VER >= 20
|
||||
= integral_constant<bool, random_access_iterator<_Tp>>;
|
||||
#else // _LIBCPP_STD_VER < 20
|
||||
|
@ -29,10 +29,10 @@ _LIBCPP_BEGIN_NAMESPACE_STD
|
||||
|
||||
#if _LIBCPP_STD_VER >= 20
|
||||
template <class _Container>
|
||||
using __insert_iterator_iter_t = ranges::iterator_t<_Container>;
|
||||
using __insert_iterator_iter_t _LIBCPP_NODEBUG = ranges::iterator_t<_Container>;
|
||||
#else
|
||||
template <class _Container>
|
||||
using __insert_iterator_iter_t = typename _Container::iterator;
|
||||
using __insert_iterator_iter_t _LIBCPP_NODEBUG = typename _Container::iterator;
|
||||
#endif
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
|
@ -47,7 +47,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD
|
||||
#if _LIBCPP_STD_VER >= 20
|
||||
|
||||
template <class _Tp>
|
||||
using __with_reference = _Tp&;
|
||||
using __with_reference _LIBCPP_NODEBUG = _Tp&;
|
||||
|
||||
template <class _Tp>
|
||||
concept __can_reference = requires { typename __with_reference<_Tp>; };
|
||||
@ -80,19 +80,20 @@ struct __iter_traits_cache {
|
||||
using type = _If< __is_primary_template<iterator_traits<_Iter> >::value, _Iter, iterator_traits<_Iter> >;
|
||||
};
|
||||
template <class _Iter>
|
||||
using _ITER_TRAITS = typename __iter_traits_cache<_Iter>::type;
|
||||
using _ITER_TRAITS _LIBCPP_NODEBUG = typename __iter_traits_cache<_Iter>::type;
|
||||
|
||||
struct __iter_concept_concept_test {
|
||||
template <class _Iter>
|
||||
using _Apply = typename _ITER_TRAITS<_Iter>::iterator_concept;
|
||||
using _Apply _LIBCPP_NODEBUG = typename _ITER_TRAITS<_Iter>::iterator_concept;
|
||||
};
|
||||
struct __iter_concept_category_test {
|
||||
template <class _Iter>
|
||||
using _Apply = typename _ITER_TRAITS<_Iter>::iterator_category;
|
||||
using _Apply _LIBCPP_NODEBUG = typename _ITER_TRAITS<_Iter>::iterator_category;
|
||||
};
|
||||
struct __iter_concept_random_fallback {
|
||||
template <class _Iter>
|
||||
using _Apply = __enable_if_t< __is_primary_template<iterator_traits<_Iter> >::value, random_access_iterator_tag >;
|
||||
using _Apply _LIBCPP_NODEBUG =
|
||||
__enable_if_t<__is_primary_template<iterator_traits<_Iter> >::value, random_access_iterator_tag>;
|
||||
};
|
||||
|
||||
template <class _Iter, class _Tester>
|
||||
@ -106,7 +107,7 @@ struct __iter_concept_cache {
|
||||
};
|
||||
|
||||
template <class _Iter>
|
||||
using _ITER_CONCEPT = typename __iter_concept_cache<_Iter>::type::template _Apply<_Iter>;
|
||||
using _ITER_CONCEPT _LIBCPP_NODEBUG = typename __iter_concept_cache<_Iter>::type::template _Apply<_Iter>;
|
||||
|
||||
template <class _Tp>
|
||||
struct __has_iterator_typedefs {
|
||||
@ -364,7 +365,7 @@ struct __iterator_traits<_Ip> {
|
||||
|
||||
template <class _Ip>
|
||||
struct iterator_traits : __iterator_traits<_Ip> {
|
||||
using __primary_template = iterator_traits;
|
||||
using __primary_template _LIBCPP_NODEBUG = iterator_traits;
|
||||
};
|
||||
|
||||
#else // _LIBCPP_STD_VER >= 20
|
||||
@ -397,7 +398,7 @@ struct __iterator_traits<_Iter, true>
|
||||
|
||||
template <class _Iter>
|
||||
struct _LIBCPP_TEMPLATE_VIS iterator_traits : __iterator_traits<_Iter, __has_iterator_typedefs<_Iter>::value> {
|
||||
using __primary_template = iterator_traits;
|
||||
using __primary_template _LIBCPP_NODEBUG = iterator_traits;
|
||||
};
|
||||
#endif // _LIBCPP_STD_VER >= 20
|
||||
|
||||
@ -430,16 +431,19 @@ template <class _Tp, class _Up>
|
||||
struct __has_iterator_concept_convertible_to<_Tp, _Up, false> : false_type {};
|
||||
|
||||
template <class _Tp>
|
||||
using __has_input_iterator_category = __has_iterator_category_convertible_to<_Tp, input_iterator_tag>;
|
||||
using __has_input_iterator_category _LIBCPP_NODEBUG = __has_iterator_category_convertible_to<_Tp, input_iterator_tag>;
|
||||
|
||||
template <class _Tp>
|
||||
using __has_forward_iterator_category = __has_iterator_category_convertible_to<_Tp, forward_iterator_tag>;
|
||||
using __has_forward_iterator_category _LIBCPP_NODEBUG =
|
||||
__has_iterator_category_convertible_to<_Tp, forward_iterator_tag>;
|
||||
|
||||
template <class _Tp>
|
||||
using __has_bidirectional_iterator_category = __has_iterator_category_convertible_to<_Tp, bidirectional_iterator_tag>;
|
||||
using __has_bidirectional_iterator_category _LIBCPP_NODEBUG =
|
||||
__has_iterator_category_convertible_to<_Tp, bidirectional_iterator_tag>;
|
||||
|
||||
template <class _Tp>
|
||||
using __has_random_access_iterator_category = __has_iterator_category_convertible_to<_Tp, random_access_iterator_tag>;
|
||||
using __has_random_access_iterator_category _LIBCPP_NODEBUG =
|
||||
__has_iterator_category_convertible_to<_Tp, random_access_iterator_tag>;
|
||||
|
||||
// __libcpp_is_contiguous_iterator determines if an iterator is known by
|
||||
// libc++ to be contiguous, either because it advertises itself as such
|
||||
@ -466,48 +470,49 @@ template <class _Iter>
|
||||
class __wrap_iter;
|
||||
|
||||
template <class _Tp>
|
||||
using __has_exactly_input_iterator_category =
|
||||
using __has_exactly_input_iterator_category _LIBCPP_NODEBUG =
|
||||
integral_constant<bool,
|
||||
__has_iterator_category_convertible_to<_Tp, input_iterator_tag>::value &&
|
||||
!__has_iterator_category_convertible_to<_Tp, forward_iterator_tag>::value>;
|
||||
|
||||
template <class _Tp>
|
||||
using __has_exactly_forward_iterator_category =
|
||||
using __has_exactly_forward_iterator_category _LIBCPP_NODEBUG =
|
||||
integral_constant<bool,
|
||||
__has_iterator_category_convertible_to<_Tp, forward_iterator_tag>::value &&
|
||||
!__has_iterator_category_convertible_to<_Tp, bidirectional_iterator_tag>::value>;
|
||||
|
||||
template <class _Tp>
|
||||
using __has_exactly_bidirectional_iterator_category =
|
||||
using __has_exactly_bidirectional_iterator_category _LIBCPP_NODEBUG =
|
||||
integral_constant<bool,
|
||||
__has_iterator_category_convertible_to<_Tp, bidirectional_iterator_tag>::value &&
|
||||
!__has_iterator_category_convertible_to<_Tp, random_access_iterator_tag>::value>;
|
||||
|
||||
template <class _InputIterator>
|
||||
using __iter_value_type = typename iterator_traits<_InputIterator>::value_type;
|
||||
using __iter_value_type _LIBCPP_NODEBUG = typename iterator_traits<_InputIterator>::value_type;
|
||||
|
||||
template <class _InputIterator>
|
||||
using __iter_key_type = __remove_const_t<typename iterator_traits<_InputIterator>::value_type::first_type>;
|
||||
using __iter_key_type _LIBCPP_NODEBUG =
|
||||
__remove_const_t<typename iterator_traits<_InputIterator>::value_type::first_type>;
|
||||
|
||||
template <class _InputIterator>
|
||||
using __iter_mapped_type = typename iterator_traits<_InputIterator>::value_type::second_type;
|
||||
using __iter_mapped_type _LIBCPP_NODEBUG = typename iterator_traits<_InputIterator>::value_type::second_type;
|
||||
|
||||
template <class _InputIterator>
|
||||
using __iter_to_alloc_type =
|
||||
using __iter_to_alloc_type _LIBCPP_NODEBUG =
|
||||
pair<const typename iterator_traits<_InputIterator>::value_type::first_type,
|
||||
typename iterator_traits<_InputIterator>::value_type::second_type>;
|
||||
|
||||
template <class _Iter>
|
||||
using __iterator_category_type = typename iterator_traits<_Iter>::iterator_category;
|
||||
using __iterator_category_type _LIBCPP_NODEBUG = typename iterator_traits<_Iter>::iterator_category;
|
||||
|
||||
template <class _Iter>
|
||||
using __iterator_pointer_type = typename iterator_traits<_Iter>::pointer;
|
||||
using __iterator_pointer_type _LIBCPP_NODEBUG = typename iterator_traits<_Iter>::pointer;
|
||||
|
||||
template <class _Iter>
|
||||
using __iter_diff_t = typename iterator_traits<_Iter>::difference_type;
|
||||
using __iter_diff_t _LIBCPP_NODEBUG = typename iterator_traits<_Iter>::difference_type;
|
||||
|
||||
template <class _Iter>
|
||||
using __iter_reference = typename iterator_traits<_Iter>::reference;
|
||||
using __iter_reference _LIBCPP_NODEBUG = typename iterator_traits<_Iter>::reference;
|
||||
|
||||
#if _LIBCPP_STD_VER >= 20
|
||||
|
||||
|
@ -26,9 +26,9 @@ _LIBCPP_BEGIN_NAMESPACE_STD
|
||||
template <class _It, class _Proj>
|
||||
struct __projected_impl {
|
||||
struct __type {
|
||||
using __primary_template = __type;
|
||||
using __projected_iterator = _It;
|
||||
using __projected_projection = _Proj;
|
||||
using __primary_template _LIBCPP_NODEBUG = __type;
|
||||
using __projected_iterator _LIBCPP_NODEBUG = _It;
|
||||
using __projected_projection _LIBCPP_NODEBUG = _Proj;
|
||||
|
||||
using value_type = remove_cvref_t<indirect_result_t<_Proj&, _It>>;
|
||||
indirect_result_t<_Proj&, _It> operator*() const; // not defined
|
||||
@ -38,9 +38,9 @@ struct __projected_impl {
|
||||
template <weakly_incrementable _It, class _Proj>
|
||||
struct __projected_impl<_It, _Proj> {
|
||||
struct __type {
|
||||
using __primary_template = __type;
|
||||
using __projected_iterator = _It;
|
||||
using __projected_projection = _Proj;
|
||||
using __primary_template _LIBCPP_NODEBUG = __type;
|
||||
using __projected_iterator _LIBCPP_NODEBUG = _It;
|
||||
using __projected_projection _LIBCPP_NODEBUG = _Proj;
|
||||
|
||||
using value_type = remove_cvref_t<indirect_result_t<_Proj&, _It>>;
|
||||
using difference_type = iter_difference_t<_It>;
|
||||
|
@ -24,13 +24,13 @@ _LIBCPP_BEGIN_NAMESPACE_STD
|
||||
#if _LIBCPP_STD_VER >= 23
|
||||
|
||||
template <ranges::input_range _Range>
|
||||
using __range_key_type = __remove_const_t<typename ranges::range_value_t<_Range>::first_type>;
|
||||
using __range_key_type _LIBCPP_NODEBUG = __remove_const_t<typename ranges::range_value_t<_Range>::first_type>;
|
||||
|
||||
template <ranges::input_range _Range>
|
||||
using __range_mapped_type = typename ranges::range_value_t<_Range>::second_type;
|
||||
using __range_mapped_type _LIBCPP_NODEBUG = typename ranges::range_value_t<_Range>::second_type;
|
||||
|
||||
template <ranges::input_range _Range>
|
||||
using __range_to_alloc_type =
|
||||
using __range_to_alloc_type _LIBCPP_NODEBUG =
|
||||
pair<const typename ranges::range_value_t<_Range>::first_type, typename ranges::range_value_t<_Range>::second_type>;
|
||||
|
||||
#endif
|
||||
|
@ -329,8 +329,8 @@ __reverse_range(_Range&& __range) {
|
||||
|
||||
template <class _Iter, bool __b>
|
||||
struct __unwrap_iter_impl<reverse_iterator<reverse_iterator<_Iter> >, __b> {
|
||||
using _UnwrappedIter = decltype(__unwrap_iter_impl<_Iter>::__unwrap(std::declval<_Iter>()));
|
||||
using _ReverseWrapper = reverse_iterator<reverse_iterator<_Iter> >;
|
||||
using _UnwrappedIter _LIBCPP_NODEBUG = decltype(__unwrap_iter_impl<_Iter>::__unwrap(std::declval<_Iter>()));
|
||||
using _ReverseWrapper _LIBCPP_NODEBUG = reverse_iterator<reverse_iterator<_Iter> >;
|
||||
|
||||
static _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _ReverseWrapper
|
||||
__rewrap(_ReverseWrapper __orig_iter, _UnwrappedIter __unwrapped_iter) {
|
||||
|
@ -72,7 +72,7 @@ template <class _Tp>
|
||||
struct __has_specialization<_Tp, sizeof(_Tp) * 0> : true_type {};
|
||||
|
||||
template <class _Iterator>
|
||||
using __is_segmented_iterator = __has_specialization<__segmented_iterator_traits<_Iterator> >;
|
||||
using __is_segmented_iterator _LIBCPP_NODEBUG = __has_specialization<__segmented_iterator_traits<_Iterator> >;
|
||||
|
||||
_LIBCPP_END_NAMESPACE_STD
|
||||
|
||||
|
@ -50,7 +50,7 @@ _LIBCPP_HIDE_FROM_ABI const _Facet& use_facet(const locale&);
|
||||
class _LIBCPP_EXPORTED_FROM_ABI locale {
|
||||
public:
|
||||
// locale is essentially a shared_ptr that doesn't support weak_ptrs and never got a move constructor.
|
||||
using __trivially_relocatable = locale;
|
||||
using __trivially_relocatable _LIBCPP_NODEBUG = locale;
|
||||
|
||||
// types:
|
||||
class _LIBCPP_EXPORTED_FROM_ABI facet;
|
||||
|
@ -135,7 +135,7 @@ namespace __locale {
|
||||
//
|
||||
// Locale management
|
||||
//
|
||||
using __locale_t = locale_t;
|
||||
using __locale_t _LIBCPP_NODEBUG = locale_t;
|
||||
|
||||
inline _LIBCPP_HIDE_FROM_ABI __locale_t __newlocale(int __category_mask, const char* __name, __locale_t __loc) {
|
||||
return newlocale(__category_mask, __name, __loc);
|
||||
|
@ -129,14 +129,14 @@ private:
|
||||
// Static values member
|
||||
static constexpr size_t __size_ = sizeof...(_Values);
|
||||
static constexpr size_t __size_dynamic_ = ((_Values == _DynTag) + ... + 0);
|
||||
using _StaticValues = __static_array<_TStatic, _Values...>;
|
||||
using _DynamicValues = __possibly_empty_array<_TDynamic, __size_dynamic_>;
|
||||
using _StaticValues _LIBCPP_NODEBUG = __static_array<_TStatic, _Values...>;
|
||||
using _DynamicValues _LIBCPP_NODEBUG = __possibly_empty_array<_TDynamic, __size_dynamic_>;
|
||||
|
||||
// Dynamic values member
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS _DynamicValues __dyn_vals_;
|
||||
|
||||
// static mapping of indices to the position in the dynamic values array
|
||||
using _DynamicIdxMap = __static_partial_sums<static_cast<size_t>(_Values == _DynTag)...>;
|
||||
using _DynamicIdxMap _LIBCPP_NODEBUG = __static_partial_sums<static_cast<size_t>(_Values == _DynTag)...>;
|
||||
|
||||
template <size_t... _Indices>
|
||||
_LIBCPP_HIDE_FROM_ABI static constexpr _DynamicValues __zeros(index_sequence<_Indices...>) noexcept {
|
||||
@ -292,7 +292,8 @@ private:
|
||||
static constexpr rank_type __rank_dynamic_ = ((_Extents == dynamic_extent) + ... + 0);
|
||||
|
||||
// internal storage type using __maybe_static_array
|
||||
using _Values = __mdspan_detail::__maybe_static_array<_IndexType, size_t, dynamic_extent, _Extents...>;
|
||||
using _Values _LIBCPP_NODEBUG =
|
||||
__mdspan_detail::__maybe_static_array<_IndexType, size_t, dynamic_extent, _Extents...>;
|
||||
[[no_unique_address]] _Values __vals_;
|
||||
|
||||
public:
|
||||
|
@ -45,8 +45,8 @@ _LIBCPP_BEGIN_NAMESPACE_STD
|
||||
// custom allocator.
|
||||
template <class _Alloc>
|
||||
struct __allocation_guard {
|
||||
using _Pointer = typename allocator_traits<_Alloc>::pointer;
|
||||
using _Size = typename allocator_traits<_Alloc>::size_type;
|
||||
using _Pointer _LIBCPP_NODEBUG = typename allocator_traits<_Alloc>::pointer;
|
||||
using _Size _LIBCPP_NODEBUG = typename allocator_traits<_Alloc>::size_type;
|
||||
|
||||
template <class _AllocT> // we perform the allocator conversion inside the constructor
|
||||
_LIBCPP_HIDE_FROM_ABI explicit __allocation_guard(_AllocT __alloc, _Size __n)
|
||||
|
@ -176,10 +176,10 @@ public:
|
||||
|
||||
#ifndef _LIBCPP_CXX03_LANG
|
||||
template <class _From, class _To>
|
||||
using __rebind_pointer_t = typename pointer_traits<_From>::template rebind<_To>;
|
||||
using __rebind_pointer_t _LIBCPP_NODEBUG = typename pointer_traits<_From>::template rebind<_To>;
|
||||
#else
|
||||
template <class _From, class _To>
|
||||
using __rebind_pointer_t = typename pointer_traits<_From>::template rebind<_To>::other;
|
||||
using __rebind_pointer_t _LIBCPP_NODEBUG = typename pointer_traits<_From>::template rebind<_To>::other;
|
||||
#endif
|
||||
|
||||
// to_address
|
||||
@ -276,7 +276,7 @@ struct __pointer_of<_Tp> {
|
||||
};
|
||||
|
||||
template <typename _Tp>
|
||||
using __pointer_of_t = typename __pointer_of<_Tp>::type;
|
||||
using __pointer_of_t _LIBCPP_NODEBUG = typename __pointer_of<_Tp>::type;
|
||||
|
||||
template <class _Tp, class _Up>
|
||||
struct __pointer_of_or {
|
||||
@ -290,7 +290,7 @@ struct __pointer_of_or<_Tp, _Up> {
|
||||
};
|
||||
|
||||
template <typename _Tp, typename _Up>
|
||||
using __pointer_of_or_t = typename __pointer_of_or<_Tp, _Up>::type;
|
||||
using __pointer_of_or_t _LIBCPP_NODEBUG = typename __pointer_of_or<_Tp, _Up>::type;
|
||||
|
||||
template <class _Smart>
|
||||
concept __resettable_smart_pointer = requires(_Smart __s) { __s.reset(); };
|
||||
|
@ -141,7 +141,7 @@ struct __for_overwrite_tag {};
|
||||
|
||||
template <class _Tp, class _Alloc>
|
||||
struct __shared_ptr_emplace : __shared_weak_count {
|
||||
using __value_type = __remove_cv_t<_Tp>;
|
||||
using __value_type _LIBCPP_NODEBUG = __remove_cv_t<_Tp>;
|
||||
|
||||
template <class... _Args,
|
||||
class _Allocator = _Alloc,
|
||||
@ -293,7 +293,8 @@ struct __shared_ptr_deleter_ctor_reqs {
|
||||
};
|
||||
|
||||
template <class _Dp>
|
||||
using __shared_ptr_nullptr_deleter_ctor_reqs = _And<is_move_constructible<_Dp>, __well_formed_deleter<_Dp, nullptr_t> >;
|
||||
using __shared_ptr_nullptr_deleter_ctor_reqs _LIBCPP_NODEBUG =
|
||||
_And<is_move_constructible<_Dp>, __well_formed_deleter<_Dp, nullptr_t> >;
|
||||
|
||||
#if defined(_LIBCPP_ABI_ENABLE_SHARED_PTR_TRIVIAL_ABI)
|
||||
# define _LIBCPP_SHARED_PTR_TRIVIAL_ABI __attribute__((__trivial_abi__))
|
||||
@ -315,7 +316,7 @@ public:
|
||||
|
||||
// A shared_ptr contains only two raw pointers which point to the heap and move constructing already doesn't require
|
||||
// any bookkeeping, so it's always trivially relocatable.
|
||||
using __trivially_relocatable = shared_ptr;
|
||||
using __trivially_relocatable _LIBCPP_NODEBUG = shared_ptr;
|
||||
|
||||
private:
|
||||
element_type* __ptr_;
|
||||
@ -1210,7 +1211,7 @@ public:
|
||||
|
||||
// A weak_ptr contains only two raw pointers which point to the heap and move constructing already doesn't require
|
||||
// any bookkeeping, so it's always trivially relocatable.
|
||||
using __trivially_relocatable = weak_ptr;
|
||||
using __trivially_relocatable _LIBCPP_NODEBUG = weak_ptr;
|
||||
|
||||
private:
|
||||
element_type* __ptr_;
|
||||
|
@ -153,7 +153,7 @@ public:
|
||||
//
|
||||
// This unique_ptr implementation only contains a pointer to the unique object and a deleter, so there are no
|
||||
// references to itself. This means that the entire structure is trivially relocatable if its members are.
|
||||
using __trivially_relocatable = __conditional_t<
|
||||
using __trivially_relocatable _LIBCPP_NODEBUG = __conditional_t<
|
||||
__libcpp_is_trivially_relocatable<pointer>::value && __libcpp_is_trivially_relocatable<deleter_type>::value,
|
||||
unique_ptr,
|
||||
void>;
|
||||
@ -189,7 +189,7 @@ private:
|
||||
(!is_reference<_Dp>::value && is_convertible<_UDel, _Dp>::value) >;
|
||||
|
||||
template <class _UDel>
|
||||
using _EnableIfDeleterAssignable = __enable_if_t< is_assignable<_Dp&, _UDel&&>::value >;
|
||||
using _EnableIfDeleterAssignable _LIBCPP_NODEBUG = __enable_if_t< is_assignable<_Dp&, _UDel&&>::value >;
|
||||
|
||||
public:
|
||||
template <bool _Dummy = true, class = _EnableIfDeleterDefaultConstructible<_Dummy> >
|
||||
@ -419,7 +419,7 @@ public:
|
||||
//
|
||||
// This unique_ptr implementation only contains a pointer to the unique object and a deleter, so there are no
|
||||
// references to itself. This means that the entire structure is trivially relocatable if its members are.
|
||||
using __trivially_relocatable = __conditional_t<
|
||||
using __trivially_relocatable _LIBCPP_NODEBUG = __conditional_t<
|
||||
__libcpp_is_trivially_relocatable<pointer>::value && __libcpp_is_trivially_relocatable<deleter_type>::value,
|
||||
unique_ptr,
|
||||
void>;
|
||||
@ -430,9 +430,9 @@ private:
|
||||
|
||||
_LIBCPP_COMPRESSED_PAIR(pointer, __ptr_, deleter_type, __deleter_);
|
||||
#ifdef _LIBCPP_ABI_BOUNDED_UNIQUE_PTR
|
||||
using _BoundsChecker = __unique_ptr_array_bounds_stored;
|
||||
using _BoundsChecker _LIBCPP_NODEBUG = __unique_ptr_array_bounds_stored;
|
||||
#else
|
||||
using _BoundsChecker = __unique_ptr_array_bounds_stateless;
|
||||
using _BoundsChecker _LIBCPP_NODEBUG = __unique_ptr_array_bounds_stateless;
|
||||
#endif
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS _BoundsChecker __checker_;
|
||||
|
||||
|
@ -45,7 +45,7 @@ struct __temporary_buffer_deleter {
|
||||
};
|
||||
|
||||
template <class _Tp>
|
||||
using __unique_temporary_buffer = unique_ptr<_Tp, __temporary_buffer_deleter<_Tp> >;
|
||||
using __unique_temporary_buffer _LIBCPP_NODEBUG = unique_ptr<_Tp, __temporary_buffer_deleter<_Tp> >;
|
||||
|
||||
template <class _Tp>
|
||||
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_NO_CFI _LIBCPP_CONSTEXPR_SINCE_CXX23 __unique_temporary_buffer<_Tp>
|
||||
|
@ -188,10 +188,10 @@ struct __map_node_handle_specifics {
|
||||
};
|
||||
|
||||
template <class _NodeType, class _Alloc>
|
||||
using __set_node_handle = __basic_node_handle< _NodeType, _Alloc, __set_node_handle_specifics>;
|
||||
using __set_node_handle _LIBCPP_NODEBUG = __basic_node_handle< _NodeType, _Alloc, __set_node_handle_specifics>;
|
||||
|
||||
template <class _NodeType, class _Alloc>
|
||||
using __map_node_handle = __basic_node_handle< _NodeType, _Alloc, __map_node_handle_specifics>;
|
||||
using __map_node_handle _LIBCPP_NODEBUG = __basic_node_handle< _NodeType, _Alloc, __map_node_handle_specifics>;
|
||||
|
||||
template <class _Iterator, class _NodeType>
|
||||
struct _LIBCPP_TEMPLATE_VIS __insert_return_type {
|
||||
|
@ -53,11 +53,13 @@ struct __serial_backend_tag;
|
||||
struct __std_thread_backend_tag;
|
||||
|
||||
# if defined(_LIBCPP_PSTL_BACKEND_SERIAL)
|
||||
using __current_configuration = __backend_configuration<__serial_backend_tag, __default_backend_tag>;
|
||||
using __current_configuration _LIBCPP_NODEBUG = __backend_configuration<__serial_backend_tag, __default_backend_tag>;
|
||||
# elif defined(_LIBCPP_PSTL_BACKEND_STD_THREAD)
|
||||
using __current_configuration = __backend_configuration<__std_thread_backend_tag, __default_backend_tag>;
|
||||
using __current_configuration _LIBCPP_NODEBUG =
|
||||
__backend_configuration<__std_thread_backend_tag, __default_backend_tag>;
|
||||
# elif defined(_LIBCPP_PSTL_BACKEND_LIBDISPATCH)
|
||||
using __current_configuration = __backend_configuration<__libdispatch_backend_tag, __default_backend_tag>;
|
||||
using __current_configuration _LIBCPP_NODEBUG =
|
||||
__backend_configuration<__libdispatch_backend_tag, __default_backend_tag>;
|
||||
# else
|
||||
|
||||
// ...New vendors can add parallel backends here...
|
||||
|
@ -58,7 +58,8 @@ struct __find_first_implemented<_Algorithm, __backend_configuration<_B1, _Bn...>
|
||||
__find_first_implemented<_Algorithm, __backend_configuration<_Bn...>, _ExecutionPolicy> > {};
|
||||
|
||||
template <template <class, class> class _Algorithm, class _BackendConfiguration, class _ExecutionPolicy>
|
||||
using __dispatch = typename __find_first_implemented<_Algorithm, _BackendConfiguration, _ExecutionPolicy>::type;
|
||||
using __dispatch _LIBCPP_NODEBUG =
|
||||
typename __find_first_implemented<_Algorithm, _BackendConfiguration, _ExecutionPolicy>::type;
|
||||
|
||||
} // namespace __pstl
|
||||
_LIBCPP_END_NAMESPACE_STD
|
||||
|
@ -59,7 +59,7 @@ class _LIBCPP_ABI_LLVM18_NO_UNIQUE_ADDRESS chunk_by_view : public view_interface
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS __movable_box<_Pred> __pred_;
|
||||
|
||||
// We cache the result of begin() to allow providing an amortized O(1).
|
||||
using _Cache = __non_propagating_cache<iterator_t<_View>>;
|
||||
using _Cache _LIBCPP_NODEBUG = __non_propagating_cache<iterator_t<_View>>;
|
||||
_Cache __cached_begin_;
|
||||
|
||||
class __iterator;
|
||||
|
@ -64,7 +64,7 @@ class drop_view : public view_interface<drop_view<_View>> {
|
||||
// Note: drop_view<input-range>::begin() is still trivially amortized O(1) because
|
||||
// one can't call begin() on it more than once.
|
||||
static constexpr bool _UseCache = forward_range<_View> && !(random_access_range<_View> && sized_range<_View>);
|
||||
using _Cache = _If<_UseCache, __non_propagating_cache<iterator_t<_View>>, __empty_cache>;
|
||||
using _Cache _LIBCPP_NODEBUG = _If<_UseCache, __non_propagating_cache<iterator_t<_View>>, __empty_cache>;
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS _Cache __cached_begin_ = _Cache();
|
||||
range_difference_t<_View> __count_ = 0;
|
||||
_View __base_ = _View();
|
||||
@ -204,7 +204,7 @@ struct __passthrough_type<subrange<_Iter, _Sent, _Kind>> {
|
||||
};
|
||||
|
||||
template <class _Tp>
|
||||
using __passthrough_type_t = typename __passthrough_type<_Tp>::type;
|
||||
using __passthrough_type_t _LIBCPP_NODEBUG = typename __passthrough_type<_Tp>::type;
|
||||
|
||||
struct __fn {
|
||||
// [range.drop.overview]: the `empty_view` case.
|
||||
|
@ -90,7 +90,7 @@ private:
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS __movable_box<_Pred> __pred_;
|
||||
|
||||
static constexpr bool _UseCache = forward_range<_View>;
|
||||
using _Cache = _If<_UseCache, __non_propagating_cache<iterator_t<_View>>, __empty_cache>;
|
||||
using _Cache _LIBCPP_NODEBUG = _If<_UseCache, __non_propagating_cache<iterator_t<_View>>, __empty_cache>;
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS _Cache __cached_begin_ = _Cache();
|
||||
};
|
||||
|
||||
|
@ -171,7 +171,7 @@ class elements_view<_View, _Np>::__iterator
|
||||
template <bool>
|
||||
friend class __sentinel;
|
||||
|
||||
using _Base = __maybe_const<_Const, _View>;
|
||||
using _Base _LIBCPP_NODEBUG = __maybe_const<_Const, _View>;
|
||||
|
||||
iterator_t<_Base> __current_ = iterator_t<_Base>();
|
||||
|
||||
@ -335,7 +335,7 @@ template <input_range _View, size_t _Np>
|
||||
template <bool _Const>
|
||||
class elements_view<_View, _Np>::__sentinel {
|
||||
private:
|
||||
using _Base = __maybe_const<_Const, _View>;
|
||||
using _Base _LIBCPP_NODEBUG = __maybe_const<_Const, _View>;
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS sentinel_t<_Base> __end_ = sentinel_t<_Base>();
|
||||
|
||||
template <bool>
|
||||
|
@ -61,7 +61,7 @@ class _LIBCPP_ABI_LLVM18_NO_UNIQUE_ADDRESS filter_view : public view_interface<f
|
||||
// We cache the result of begin() to allow providing an amortized O(1) begin() whenever
|
||||
// the underlying range is at least a forward_range.
|
||||
static constexpr bool _UseCache = forward_range<_View>;
|
||||
using _Cache = _If<_UseCache, __non_propagating_cache<iterator_t<_View>>, __empty_cache>;
|
||||
using _Cache _LIBCPP_NODEBUG = _If<_UseCache, __non_propagating_cache<iterator_t<_View>>, __empty_cache>;
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS _Cache __cached_begin_ = _Cache();
|
||||
|
||||
class __iterator;
|
||||
@ -115,7 +115,7 @@ struct __filter_iterator_category {};
|
||||
|
||||
template <forward_range _View>
|
||||
struct __filter_iterator_category<_View> {
|
||||
using _Cat = typename iterator_traits<iterator_t<_View>>::iterator_category;
|
||||
using _Cat _LIBCPP_NODEBUG = typename iterator_traits<iterator_t<_View>>::iterator_category;
|
||||
using iterator_category =
|
||||
_If<derived_from<_Cat, bidirectional_iterator_tag>,
|
||||
bidirectional_iterator_tag,
|
||||
|
@ -68,7 +68,7 @@ struct __get_wider_signed {
|
||||
};
|
||||
|
||||
template <class _Start>
|
||||
using _IotaDiffT =
|
||||
using _IotaDiffT _LIBCPP_NODEBUG =
|
||||
typename _If< (!integral<_Start> || sizeof(iter_difference_t<_Start>) > sizeof(_Start)),
|
||||
type_identity<iter_difference_t<_Start>>,
|
||||
__get_wider_signed<_Start> >::type;
|
||||
|
@ -55,8 +55,8 @@ struct __join_view_iterator_category {};
|
||||
template <class _View>
|
||||
requires is_reference_v<range_reference_t<_View>> && forward_range<_View> && forward_range<range_reference_t<_View>>
|
||||
struct __join_view_iterator_category<_View> {
|
||||
using _OuterC = typename iterator_traits<iterator_t<_View>>::iterator_category;
|
||||
using _InnerC = typename iterator_traits<iterator_t<range_reference_t<_View>>>::iterator_category;
|
||||
using _OuterC _LIBCPP_NODEBUG = typename iterator_traits<iterator_t<_View>>::iterator_category;
|
||||
using _InnerC _LIBCPP_NODEBUG = typename iterator_traits<iterator_t<range_reference_t<_View>>>::iterator_category;
|
||||
|
||||
using iterator_category =
|
||||
_If< derived_from<_OuterC, bidirectional_iterator_tag> && derived_from<_InnerC, bidirectional_iterator_tag> &&
|
||||
@ -71,7 +71,7 @@ template <input_range _View>
|
||||
requires view<_View> && input_range<range_reference_t<_View>>
|
||||
class join_view : public view_interface<join_view<_View>> {
|
||||
private:
|
||||
using _InnerRange = range_reference_t<_View>;
|
||||
using _InnerRange _LIBCPP_NODEBUG = range_reference_t<_View>;
|
||||
|
||||
template <bool>
|
||||
struct __iterator;
|
||||
@ -85,11 +85,12 @@ private:
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS _View __base_ = _View();
|
||||
|
||||
static constexpr bool _UseOuterCache = !forward_range<_View>;
|
||||
using _OuterCache = _If<_UseOuterCache, __non_propagating_cache<iterator_t<_View>>, __empty_cache>;
|
||||
using _OuterCache _LIBCPP_NODEBUG = _If<_UseOuterCache, __non_propagating_cache<iterator_t<_View>>, __empty_cache>;
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS _OuterCache __outer_;
|
||||
|
||||
static constexpr bool _UseInnerCache = !is_reference_v<_InnerRange>;
|
||||
using _InnerCache = _If<_UseInnerCache, __non_propagating_cache<remove_cvref_t<_InnerRange>>, __empty_cache>;
|
||||
using _InnerCache _LIBCPP_NODEBUG =
|
||||
_If<_UseInnerCache, __non_propagating_cache<remove_cvref_t<_InnerRange>>, __empty_cache>;
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS _InnerCache __inner_;
|
||||
|
||||
public:
|
||||
@ -155,8 +156,8 @@ private:
|
||||
template <bool>
|
||||
friend struct __sentinel;
|
||||
|
||||
using _Parent = __maybe_const<_Const, join_view>;
|
||||
using _Base = __maybe_const<_Const, _View>;
|
||||
using _Parent _LIBCPP_NODEBUG = __maybe_const<_Const, join_view>;
|
||||
using _Base _LIBCPP_NODEBUG = __maybe_const<_Const, _View>;
|
||||
sentinel_t<_Base> __end_ = sentinel_t<_Base>();
|
||||
|
||||
public:
|
||||
@ -190,18 +191,18 @@ struct join_view<_View>::__iterator final : public __join_view_iterator_category
|
||||
static constexpr bool __is_join_view_iterator = true;
|
||||
|
||||
private:
|
||||
using _Parent = __maybe_const<_Const, join_view<_View>>;
|
||||
using _Base = __maybe_const<_Const, _View>;
|
||||
using _Outer = iterator_t<_Base>;
|
||||
using _Inner = iterator_t<range_reference_t<_Base>>;
|
||||
using _InnerRange = range_reference_t<_View>;
|
||||
using _Parent _LIBCPP_NODEBUG = __maybe_const<_Const, join_view<_View>>;
|
||||
using _Base _LIBCPP_NODEBUG = __maybe_const<_Const, _View>;
|
||||
using _Outer _LIBCPP_NODEBUG = iterator_t<_Base>;
|
||||
using _Inner _LIBCPP_NODEBUG = iterator_t<range_reference_t<_Base>>;
|
||||
using _InnerRange _LIBCPP_NODEBUG = range_reference_t<_View>;
|
||||
|
||||
static_assert(!_Const || forward_range<_Base>, "Const can only be true when Base models forward_range.");
|
||||
|
||||
static constexpr bool __ref_is_glvalue = is_reference_v<range_reference_t<_Base>>;
|
||||
|
||||
static constexpr bool _OuterPresent = forward_range<_Base>;
|
||||
using _OuterType = _If<_OuterPresent, _Outer, std::__empty>;
|
||||
using _OuterType _LIBCPP_NODEBUG = _If<_OuterPresent, _Outer, std::__empty>;
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS _OuterType __outer_ = _OuterType();
|
||||
|
||||
optional<_Inner> __inner_;
|
||||
@ -379,7 +380,7 @@ template <class _JoinViewIterator>
|
||||
struct __segmented_iterator_traits<_JoinViewIterator> {
|
||||
using __segment_iterator _LIBCPP_NODEBUG =
|
||||
__iterator_with_data<typename _JoinViewIterator::_Outer, typename _JoinViewIterator::_Parent*>;
|
||||
using __local_iterator = typename _JoinViewIterator::_Inner;
|
||||
using __local_iterator _LIBCPP_NODEBUG = typename _JoinViewIterator::_Inner;
|
||||
|
||||
// TODO: Would it make sense to enable the optimization for other iterator types?
|
||||
|
||||
|
@ -72,7 +72,8 @@ class lazy_split_view : public view_interface<lazy_split_view<_View, _Pattern>>
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS _View __base_ = _View();
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS _Pattern __pattern_ = _Pattern();
|
||||
|
||||
using _MaybeCurrent = _If<!forward_range<_View>, __non_propagating_cache<iterator_t<_View>>, __empty_cache>;
|
||||
using _MaybeCurrent _LIBCPP_NODEBUG =
|
||||
_If<!forward_range<_View>, __non_propagating_cache<iterator_t<_View>>, __empty_cache>;
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS _MaybeCurrent __current_ = _MaybeCurrent();
|
||||
|
||||
template <bool>
|
||||
@ -146,11 +147,11 @@ private:
|
||||
friend struct __inner_iterator;
|
||||
friend __outer_iterator<true>;
|
||||
|
||||
using _Parent = __maybe_const<_Const, lazy_split_view>;
|
||||
using _Base = __maybe_const<_Const, _View>;
|
||||
using _Parent _LIBCPP_NODEBUG = __maybe_const<_Const, lazy_split_view>;
|
||||
using _Base _LIBCPP_NODEBUG = __maybe_const<_Const, _View>;
|
||||
|
||||
_Parent* __parent_ = nullptr;
|
||||
using _MaybeCurrent = _If<forward_range<_View>, iterator_t<_Base>, __empty_cache>;
|
||||
using _MaybeCurrent _LIBCPP_NODEBUG = _If<forward_range<_View>, iterator_t<_Base>, __empty_cache>;
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS _MaybeCurrent __current_ = _MaybeCurrent();
|
||||
bool __trailing_empty_ = false;
|
||||
|
||||
@ -283,7 +284,7 @@ private:
|
||||
template <bool _Const>
|
||||
struct __inner_iterator : __inner_iterator_category<__maybe_const<_Const, _View>> {
|
||||
private:
|
||||
using _Base = __maybe_const<_Const, _View>;
|
||||
using _Base _LIBCPP_NODEBUG = __maybe_const<_Const, _View>;
|
||||
// Workaround for a GCC issue.
|
||||
static constexpr bool _OuterConst = _Const;
|
||||
__outer_iterator<_Const> __i_ = __outer_iterator<_OuterConst>();
|
||||
|
@ -61,7 +61,7 @@ struct __repeat_view_iterator_difference<_Tp> {
|
||||
};
|
||||
|
||||
template <class _Tp>
|
||||
using __repeat_view_iterator_difference_t = typename __repeat_view_iterator_difference<_Tp>::type;
|
||||
using __repeat_view_iterator_difference_t _LIBCPP_NODEBUG = typename __repeat_view_iterator_difference<_Tp>::type;
|
||||
|
||||
namespace views::__drop {
|
||||
struct __fn;
|
||||
@ -139,7 +139,7 @@ template <move_constructible _Tp, semiregular _Bound>
|
||||
class repeat_view<_Tp, _Bound>::__iterator {
|
||||
friend class repeat_view;
|
||||
|
||||
using _IndexT = conditional_t<same_as<_Bound, unreachable_sentinel_t>, ptrdiff_t, _Bound>;
|
||||
using _IndexT _LIBCPP_NODEBUG = conditional_t<same_as<_Bound, unreachable_sentinel_t>, ptrdiff_t, _Bound>;
|
||||
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr explicit __iterator(const _Tp* __value, _IndexT __bound_sentinel = _IndexT())
|
||||
: __value_(__value), __current_(__bound_sentinel) {}
|
||||
|
@ -47,7 +47,8 @@ class reverse_view : public view_interface<reverse_view<_View>> {
|
||||
// We cache begin() whenever ranges::next is not guaranteed O(1) to provide an
|
||||
// amortized O(1) begin() method.
|
||||
static constexpr bool _UseCache = !random_access_range<_View> && !common_range<_View>;
|
||||
using _Cache = _If<_UseCache, __non_propagating_cache<reverse_iterator<iterator_t<_View>>>, __empty_cache>;
|
||||
using _Cache _LIBCPP_NODEBUG =
|
||||
_If<_UseCache, __non_propagating_cache<reverse_iterator<iterator_t<_View>>>, __empty_cache>;
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS _Cache __cached_begin_ = _Cache();
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS _View __base_ = _View();
|
||||
|
||||
|
@ -52,7 +52,7 @@ class split_view : public view_interface<split_view<_View, _Pattern>> {
|
||||
private:
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS _View __base_ = _View();
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS _Pattern __pattern_ = _Pattern();
|
||||
using _Cache = __non_propagating_cache<subrange<iterator_t<_View>>>;
|
||||
using _Cache _LIBCPP_NODEBUG = __non_propagating_cache<subrange<iterator_t<_View>>>;
|
||||
_Cache __cached_begin_ = _Cache();
|
||||
|
||||
template <class, class>
|
||||
|
@ -82,7 +82,7 @@ private:
|
||||
struct _Empty {
|
||||
_LIBCPP_HIDE_FROM_ABI constexpr _Empty(auto) noexcept {}
|
||||
};
|
||||
using _Size = conditional_t<_StoreSize, make_unsigned_t<iter_difference_t<_Iter>>, _Empty>;
|
||||
using _Size _LIBCPP_NODEBUG = conditional_t<_StoreSize, make_unsigned_t<iter_difference_t<_Iter>>, _Empty>;
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS _Iter __begin_ = _Iter();
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS _Sent __end_ = _Sent();
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS _Size __size_ = 0;
|
||||
|
@ -161,9 +161,9 @@ public:
|
||||
template <view _View>
|
||||
template <bool _Const>
|
||||
class take_view<_View>::__sentinel {
|
||||
using _Base = __maybe_const<_Const, _View>;
|
||||
using _Base _LIBCPP_NODEBUG = __maybe_const<_Const, _View>;
|
||||
template <bool _OtherConst>
|
||||
using _Iter = counted_iterator<iterator_t<__maybe_const<_OtherConst, _View>>>;
|
||||
using _Iter _LIBCPP_NODEBUG = counted_iterator<iterator_t<__maybe_const<_OtherConst, _View>>>;
|
||||
_LIBCPP_NO_UNIQUE_ADDRESS sentinel_t<_Base> __end_ = sentinel_t<_Base>();
|
||||
|
||||
template <bool>
|
||||
@ -244,7 +244,7 @@ struct __passthrough_type<subrange<_Iter, _Sent, _Kind>> {
|
||||
};
|
||||
|
||||
template <class _Tp>
|
||||
using __passthrough_type_t = typename __passthrough_type<_Tp>::type;
|
||||
using __passthrough_type_t _LIBCPP_NODEBUG = typename __passthrough_type<_Tp>::type;
|
||||
|
||||
struct __fn {
|
||||
// [range.take.overview]: the `empty_view` case.
|
||||
|
@ -103,7 +103,7 @@ template <view _View, class _Pred>
|
||||
requires input_range<_View> && is_object_v<_Pred> && indirect_unary_predicate<const _Pred, iterator_t<_View>>
|
||||
template <bool _Const>
|
||||
class take_while_view<_View, _Pred>::__sentinel {
|
||||
using _Base = __maybe_const<_Const, _View>;
|
||||
using _Base _LIBCPP_NODEBUG = __maybe_const<_Const, _View>;
|
||||
|
||||
sentinel_t<_Base> __end_ = sentinel_t<_Base>();
|
||||
const _Pred* __pred_ = nullptr;
|
||||
|
@ -159,7 +159,7 @@ struct __transform_view_iterator_category_base {};
|
||||
|
||||
template <forward_range _View, class _Fn>
|
||||
struct __transform_view_iterator_category_base<_View, _Fn> {
|
||||
using _Cat = typename iterator_traits<iterator_t<_View>>::iterator_category;
|
||||
using _Cat _LIBCPP_NODEBUG = typename iterator_traits<iterator_t<_View>>::iterator_category;
|
||||
|
||||
using iterator_category =
|
||||
conditional_t< is_reference_v<invoke_result_t<_Fn&, range_reference_t<_View>>>,
|
||||
@ -177,8 +177,8 @@ template <bool _Const>
|
||||
class transform_view<_View, _Fn>::__iterator
|
||||
: public __transform_view_iterator_category_base<_View, __maybe_const<_Const, _Fn>> {
|
||||
|
||||
using _Parent = __maybe_const<_Const, transform_view>;
|
||||
using _Base = __maybe_const<_Const, _View>;
|
||||
using _Parent _LIBCPP_NODEBUG = __maybe_const<_Const, transform_view>;
|
||||
using _Base _LIBCPP_NODEBUG = __maybe_const<_Const, _View>;
|
||||
|
||||
_Parent* __parent_ = nullptr;
|
||||
|
||||
@ -338,8 +338,8 @@ template <input_range _View, copy_constructible _Fn>
|
||||
requires __transform_view_constraints<_View, _Fn>
|
||||
template <bool _Const>
|
||||
class transform_view<_View, _Fn>::__sentinel {
|
||||
using _Parent = __maybe_const<_Const, transform_view>;
|
||||
using _Base = __maybe_const<_Const, _View>;
|
||||
using _Parent _LIBCPP_NODEBUG = __maybe_const<_Const, transform_view>;
|
||||
using _Base _LIBCPP_NODEBUG = __maybe_const<_Const, _View>;
|
||||
|
||||
sentinel_t<_Base> __end_ = sentinel_t<_Base>();
|
||||
|
||||
|
@ -53,8 +53,8 @@ struct __split_buffer {
|
||||
public:
|
||||
using value_type = _Tp;
|
||||
using allocator_type = _Allocator;
|
||||
using __alloc_rr = __libcpp_remove_reference_t<allocator_type>;
|
||||
using __alloc_traits = allocator_traits<__alloc_rr>;
|
||||
using __alloc_rr _LIBCPP_NODEBUG = __libcpp_remove_reference_t<allocator_type>;
|
||||
using __alloc_traits _LIBCPP_NODEBUG = allocator_traits<__alloc_rr>;
|
||||
using reference = value_type&;
|
||||
using const_reference = const value_type&;
|
||||
using size_type = typename __alloc_traits::size_type;
|
||||
@ -68,7 +68,7 @@ public:
|
||||
// - pointer: may be trivially relocatable, so it's checked
|
||||
// - allocator_type: may be trivially relocatable, so it's checked
|
||||
// __split_buffer doesn't have any self-references, so it's trivially relocatable if its members are.
|
||||
using __trivially_relocatable = __conditional_t<
|
||||
using __trivially_relocatable _LIBCPP_NODEBUG = __conditional_t<
|
||||
__libcpp_is_trivially_relocatable<pointer>::value && __libcpp_is_trivially_relocatable<allocator_type>::value,
|
||||
__split_buffer,
|
||||
void>;
|
||||
|
@ -27,7 +27,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD
|
||||
#if _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_THREADS
|
||||
|
||||
struct __stop_callback_base : __intrusive_node_base<__stop_callback_base> {
|
||||
using __callback_fn_t = void(__stop_callback_base*) noexcept;
|
||||
using __callback_fn_t _LIBCPP_NODEBUG = void(__stop_callback_base*) noexcept;
|
||||
_LIBCPP_HIDE_FROM_ABI explicit __stop_callback_base(__callback_fn_t* __callback_fn) : __callback_fn_(__callback_fn) {}
|
||||
|
||||
_LIBCPP_HIDE_FROM_ABI void __invoke() noexcept { __callback_fn_(this); }
|
||||
@ -58,9 +58,9 @@ class __stop_state {
|
||||
// It is used by __intrusive_shared_ptr, but it is stored here for better layout
|
||||
atomic<uint32_t> __ref_count_ = 0;
|
||||
|
||||
using __state_t = uint32_t;
|
||||
using __callback_list_lock = __atomic_unique_lock<__state_t, __callback_list_locked_bit>;
|
||||
using __callback_list = __intrusive_list_view<__stop_callback_base>;
|
||||
using __state_t _LIBCPP_NODEBUG = uint32_t;
|
||||
using __callback_list_lock _LIBCPP_NODEBUG = __atomic_unique_lock<__state_t, __callback_list_locked_bit>;
|
||||
using __callback_list _LIBCPP_NODEBUG = __intrusive_list_view<__stop_callback_base>;
|
||||
|
||||
__callback_list __callback_list_;
|
||||
__thread_id __requesting_thread_;
|
||||
|
@ -39,7 +39,7 @@
|
||||
|
||||
_LIBCPP_BEGIN_NAMESPACE_STD
|
||||
|
||||
using __libcpp_timespec_t = ::timespec;
|
||||
using __libcpp_timespec_t _LIBCPP_NODEBUG = ::timespec;
|
||||
|
||||
//
|
||||
// Mutex
|
||||
|
@ -47,9 +47,9 @@ struct __make_tuple_types_flat<_Tuple<_Types...>, __tuple_indices<_Idx...>> {
|
||||
template <class _Vt, size_t _Np, size_t... _Idx>
|
||||
struct __make_tuple_types_flat<array<_Vt, _Np>, __tuple_indices<_Idx...>> {
|
||||
template <size_t>
|
||||
using __value_type = _Vt;
|
||||
using __value_type _LIBCPP_NODEBUG = _Vt;
|
||||
template <class _Tp>
|
||||
using __apply_quals = __tuple_types<__copy_cvref_t<_Tp, __value_type<_Idx>>...>;
|
||||
using __apply_quals _LIBCPP_NODEBUG = __tuple_types<__copy_cvref_t<_Tp, __value_type<_Idx>>...>;
|
||||
};
|
||||
|
||||
template <class _Tp,
|
||||
@ -58,8 +58,8 @@ template <class _Tp,
|
||||
bool _SameSize = (_Ep == tuple_size<__libcpp_remove_reference_t<_Tp> >::value)>
|
||||
struct __make_tuple_types {
|
||||
static_assert(_Sp <= _Ep, "__make_tuple_types input error");
|
||||
using _RawTp = __remove_cvref_t<_Tp>;
|
||||
using _Maker = __make_tuple_types_flat<_RawTp, typename __make_tuple_indices<_Ep, _Sp>::type>;
|
||||
using _RawTp _LIBCPP_NODEBUG = __remove_cvref_t<_Tp>;
|
||||
using _Maker _LIBCPP_NODEBUG = __make_tuple_types_flat<_RawTp, typename __make_tuple_indices<_Ep, _Sp>::type>;
|
||||
using type = typename _Maker::template __apply_quals<_Tp>;
|
||||
};
|
||||
|
||||
|
@ -41,7 +41,7 @@ struct __tuple_sfinae_base {
|
||||
static auto __do_test(...) -> false_type;
|
||||
|
||||
template <class _FromArgs, class _ToArgs>
|
||||
using __constructible = decltype(__do_test<is_constructible>(_ToArgs{}, _FromArgs{}));
|
||||
using __constructible _LIBCPP_NODEBUG = decltype(__do_test<is_constructible>(_ToArgs{}, _FromArgs{}));
|
||||
};
|
||||
|
||||
// __tuple_constructible
|
||||
|
@ -29,7 +29,7 @@ struct _LIBCPP_TEMPLATE_VIS tuple_size;
|
||||
|
||||
#if !defined(_LIBCPP_CXX03_LANG)
|
||||
template <class _Tp, class...>
|
||||
using __enable_if_tuple_size_imp = _Tp;
|
||||
using __enable_if_tuple_size_imp _LIBCPP_NODEBUG = _Tp;
|
||||
|
||||
template <class _Tp>
|
||||
struct _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp< const _Tp,
|
||||
|
@ -21,7 +21,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD
|
||||
#if __has_builtin(__add_lvalue_reference)
|
||||
|
||||
template <class _Tp>
|
||||
using __add_lvalue_reference_t = __add_lvalue_reference(_Tp);
|
||||
using __add_lvalue_reference_t _LIBCPP_NODEBUG = __add_lvalue_reference(_Tp);
|
||||
|
||||
#else
|
||||
|
||||
|
@ -23,7 +23,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD
|
||||
#if !defined(_LIBCPP_WORKAROUND_OBJCXX_COMPILER_INTRINSICS) && __has_builtin(__add_pointer)
|
||||
|
||||
template <class _Tp>
|
||||
using __add_pointer_t = __add_pointer(_Tp);
|
||||
using __add_pointer_t _LIBCPP_NODEBUG = __add_pointer(_Tp);
|
||||
|
||||
#else
|
||||
template <class _Tp, bool = __libcpp_is_referenceable<_Tp>::value || is_void<_Tp>::value>
|
||||
|
@ -21,7 +21,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD
|
||||
#if __has_builtin(__add_rvalue_reference)
|
||||
|
||||
template <class _Tp>
|
||||
using __add_rvalue_reference_t = __add_rvalue_reference(_Tp);
|
||||
using __add_rvalue_reference_t _LIBCPP_NODEBUG = __add_rvalue_reference(_Tp);
|
||||
|
||||
#else
|
||||
|
||||
|
@ -34,7 +34,7 @@ struct __struct_double4 {
|
||||
double __lx[4];
|
||||
};
|
||||
|
||||
using __all_types =
|
||||
using __all_types _LIBCPP_NODEBUG =
|
||||
__type_list<__align_type<unsigned char>,
|
||||
__align_type<unsigned short>,
|
||||
__align_type<unsigned int>,
|
||||
|
@ -30,7 +30,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD
|
||||
#if _LIBCPP_STD_VER >= 20
|
||||
// Let COND_RES(X, Y) be:
|
||||
template <class _Xp, class _Yp>
|
||||
using __cond_res = decltype(false ? std::declval<_Xp (&)()>()() : std::declval<_Yp (&)()>()());
|
||||
using __cond_res _LIBCPP_NODEBUG = decltype(false ? std::declval<_Xp (&)()>()() : std::declval<_Yp (&)()>()());
|
||||
|
||||
// Let `XREF(A)` denote a unary alias template `T` such that `T<U>` denotes the same type as `U`
|
||||
// with the addition of `A`'s cv and reference qualifiers, for a non-reference cv-unqualified type
|
||||
@ -39,7 +39,7 @@ using __cond_res = decltype(false ? std::declval<_Xp (&)()>()() : std::declval<_
|
||||
template <class _Tp>
|
||||
struct __xref {
|
||||
template <class _Up>
|
||||
using __apply = __copy_cvref_t<_Tp, _Up>;
|
||||
using __apply _LIBCPP_NODEBUG = __copy_cvref_t<_Tp, _Up>;
|
||||
};
|
||||
|
||||
// Given types A and B, let X be remove_reference_t<A>, let Y be remove_reference_t<B>,
|
||||
@ -48,10 +48,10 @@ template <class _Ap, class _Bp, class _Xp = remove_reference_t<_Ap>, class _Yp =
|
||||
struct __common_ref;
|
||||
|
||||
template <class _Xp, class _Yp>
|
||||
using __common_ref_t = typename __common_ref<_Xp, _Yp>::__type;
|
||||
using __common_ref_t _LIBCPP_NODEBUG = typename __common_ref<_Xp, _Yp>::__type;
|
||||
|
||||
template <class _Xp, class _Yp>
|
||||
using __cv_cond_res = __cond_res<__copy_cv_t<_Xp, _Yp>&, __copy_cv_t<_Yp, _Xp>&>;
|
||||
using __cv_cond_res _LIBCPP_NODEBUG = __cond_res<__copy_cv_t<_Xp, _Yp>&, __copy_cv_t<_Yp, _Xp>&>;
|
||||
|
||||
// If A and B are both lvalue reference types, COMMON-REF(A, B) is
|
||||
// COND-RES(COPYCV(X, Y)&, COPYCV(Y, X)&) if that type exists and is a reference type.
|
||||
@ -61,13 +61,13 @@ template <class _Ap, class _Bp, class _Xp, class _Yp>
|
||||
requires { typename __cv_cond_res<_Xp, _Yp>; } &&
|
||||
is_reference_v<__cv_cond_res<_Xp, _Yp>>
|
||||
struct __common_ref<_Ap&, _Bp&, _Xp, _Yp> {
|
||||
using __type = __cv_cond_res<_Xp, _Yp>;
|
||||
using __type _LIBCPP_NODEBUG = __cv_cond_res<_Xp, _Yp>;
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
// Otherwise, let C be remove_reference_t<COMMON-REF(X&, Y&)>&&. ...
|
||||
template <class _Xp, class _Yp>
|
||||
using __common_ref_C = remove_reference_t<__common_ref_t<_Xp&, _Yp&>>&&;
|
||||
using __common_ref_C _LIBCPP_NODEBUG = remove_reference_t<__common_ref_t<_Xp&, _Yp&>>&&;
|
||||
|
||||
// .... If A and B are both rvalue reference types, C is well-formed, and
|
||||
// is_convertible_v<A, C> && is_convertible_v<B, C> is true, then COMMON-REF(A, B) is C.
|
||||
@ -78,13 +78,13 @@ template <class _Ap, class _Bp, class _Xp, class _Yp>
|
||||
is_convertible_v<_Ap&&, __common_ref_C<_Xp, _Yp>> &&
|
||||
is_convertible_v<_Bp&&, __common_ref_C<_Xp, _Yp>>
|
||||
struct __common_ref<_Ap&&, _Bp&&, _Xp, _Yp> {
|
||||
using __type = __common_ref_C<_Xp, _Yp>;
|
||||
using __type _LIBCPP_NODEBUG = __common_ref_C<_Xp, _Yp>;
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
// Otherwise, let D be COMMON-REF(const X&, Y&). ...
|
||||
template <class _Tp, class _Up>
|
||||
using __common_ref_D = __common_ref_t<const _Tp&, _Up&>;
|
||||
using __common_ref_D _LIBCPP_NODEBUG = __common_ref_t<const _Tp&, _Up&>;
|
||||
|
||||
// ... If A is an rvalue reference and B is an lvalue reference and D is well-formed and
|
||||
// is_convertible_v<A, D> is true, then COMMON-REF(A, B) is D.
|
||||
@ -94,7 +94,7 @@ template <class _Ap, class _Bp, class _Xp, class _Yp>
|
||||
requires { typename __common_ref_D<_Xp, _Yp>; } &&
|
||||
is_convertible_v<_Ap&&, __common_ref_D<_Xp, _Yp>>
|
||||
struct __common_ref<_Ap&&, _Bp&, _Xp, _Yp> {
|
||||
using __type = __common_ref_D<_Xp, _Yp>;
|
||||
using __type _LIBCPP_NODEBUG = __common_ref_D<_Xp, _Yp>;
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
@ -150,7 +150,7 @@ template <class, class, template <class> class, template <class> class>
|
||||
struct basic_common_reference {};
|
||||
|
||||
template <class _Tp, class _Up>
|
||||
using __basic_common_reference_t =
|
||||
using __basic_common_reference_t _LIBCPP_NODEBUG =
|
||||
typename basic_common_reference<remove_cvref_t<_Tp>,
|
||||
remove_cvref_t<_Up>,
|
||||
__xref<_Tp>::template __apply,
|
||||
|
@ -31,7 +31,7 @@ template <class... _Args>
|
||||
struct common_type;
|
||||
|
||||
template <class... _Args>
|
||||
using __common_type_t = typename common_type<_Args...>::type;
|
||||
using __common_type_t _LIBCPP_NODEBUG = typename common_type<_Args...>::type;
|
||||
|
||||
template <class... _Args>
|
||||
struct common_type : __builtin_common_type<__common_type_t, __type_identity, __empty, _Args...> {};
|
||||
@ -40,7 +40,7 @@ struct common_type : __builtin_common_type<__common_type_t, __type_identity, __e
|
||||
# if _LIBCPP_STD_VER >= 20
|
||||
// Let COND_RES(X, Y) be:
|
||||
template <class _Tp, class _Up>
|
||||
using __cond_type = decltype(false ? std::declval<_Tp>() : std::declval<_Up>());
|
||||
using __cond_type _LIBCPP_NODEBUG = decltype(false ? std::declval<_Tp>() : std::declval<_Up>());
|
||||
|
||||
template <class _Tp, class _Up, class = void>
|
||||
struct __common_type3 {};
|
||||
|
@ -22,7 +22,7 @@
|
||||
_LIBCPP_BEGIN_NAMESPACE_STD
|
||||
|
||||
template <class...>
|
||||
using __expand_to_true = true_type;
|
||||
using __expand_to_true _LIBCPP_NODEBUG = true_type;
|
||||
|
||||
template <class... _Pred>
|
||||
__expand_to_true<__enable_if_t<_Pred::value>...> __and_helper(int);
|
||||
|
@ -22,29 +22,29 @@ _LIBCPP_BEGIN_NAMESPACE_STD
|
||||
template <class _From>
|
||||
struct __copy_cv {
|
||||
template <class _To>
|
||||
using __apply = _To;
|
||||
using __apply _LIBCPP_NODEBUG = _To;
|
||||
};
|
||||
|
||||
template <class _From>
|
||||
struct __copy_cv<const _From> {
|
||||
template <class _To>
|
||||
using __apply = const _To;
|
||||
using __apply _LIBCPP_NODEBUG = const _To;
|
||||
};
|
||||
|
||||
template <class _From>
|
||||
struct __copy_cv<volatile _From> {
|
||||
template <class _To>
|
||||
using __apply = volatile _To;
|
||||
using __apply _LIBCPP_NODEBUG = volatile _To;
|
||||
};
|
||||
|
||||
template <class _From>
|
||||
struct __copy_cv<const volatile _From> {
|
||||
template <class _To>
|
||||
using __apply = const volatile _To;
|
||||
using __apply _LIBCPP_NODEBUG = const volatile _To;
|
||||
};
|
||||
|
||||
template <class _From, class _To>
|
||||
using __copy_cv_t = typename __copy_cv<_From>::template __apply<_To>;
|
||||
using __copy_cv_t _LIBCPP_NODEBUG = typename __copy_cv<_From>::template __apply<_To>;
|
||||
|
||||
_LIBCPP_END_NAMESPACE_STD
|
||||
|
||||
|
@ -36,7 +36,7 @@ struct __copy_cvref<_From&&, _To> {
|
||||
};
|
||||
|
||||
template <class _From, class _To>
|
||||
using __copy_cvref_t = typename __copy_cvref<_From, _To>::type;
|
||||
using __copy_cvref_t _LIBCPP_NODEBUG = typename __copy_cvref<_From, _To>::type;
|
||||
|
||||
_LIBCPP_END_NAMESPACE_STD
|
||||
|
||||
|
@ -31,7 +31,7 @@ struct _OrImpl<true> {
|
||||
template <>
|
||||
struct _OrImpl<false> {
|
||||
template <class _Res, class...>
|
||||
using _Result = _Res;
|
||||
using _Result _LIBCPP_NODEBUG = _Res;
|
||||
};
|
||||
|
||||
// _Or always performs lazy evaluation of its arguments.
|
||||
|
@ -44,12 +44,12 @@ template <class _Fp,
|
||||
class _DecayFp = __decay_t<_Fp>,
|
||||
class _DecayA0 = __decay_t<_A0>,
|
||||
class _ClassT = typename __member_pointer_class_type<_DecayFp>::type>
|
||||
using __enable_if_bullet1 =
|
||||
using __enable_if_bullet1 _LIBCPP_NODEBUG =
|
||||
__enable_if_t<is_member_function_pointer<_DecayFp>::value &&
|
||||
(is_same<_ClassT, _DecayA0>::value || is_base_of<_ClassT, _DecayA0>::value)>;
|
||||
|
||||
template <class _Fp, class _A0, class _DecayFp = __decay_t<_Fp>, class _DecayA0 = __decay_t<_A0> >
|
||||
using __enable_if_bullet2 =
|
||||
using __enable_if_bullet2 _LIBCPP_NODEBUG =
|
||||
__enable_if_t<is_member_function_pointer<_DecayFp>::value && __is_reference_wrapper<_DecayA0>::value>;
|
||||
|
||||
template <class _Fp,
|
||||
@ -57,7 +57,7 @@ template <class _Fp,
|
||||
class _DecayFp = __decay_t<_Fp>,
|
||||
class _DecayA0 = __decay_t<_A0>,
|
||||
class _ClassT = typename __member_pointer_class_type<_DecayFp>::type>
|
||||
using __enable_if_bullet3 =
|
||||
using __enable_if_bullet3 _LIBCPP_NODEBUG =
|
||||
__enable_if_t<is_member_function_pointer<_DecayFp>::value &&
|
||||
!(is_same<_ClassT, _DecayA0>::value || is_base_of<_ClassT, _DecayA0>::value) &&
|
||||
!__is_reference_wrapper<_DecayA0>::value>;
|
||||
@ -67,12 +67,12 @@ template <class _Fp,
|
||||
class _DecayFp = __decay_t<_Fp>,
|
||||
class _DecayA0 = __decay_t<_A0>,
|
||||
class _ClassT = typename __member_pointer_class_type<_DecayFp>::type>
|
||||
using __enable_if_bullet4 =
|
||||
using __enable_if_bullet4 _LIBCPP_NODEBUG =
|
||||
__enable_if_t<is_member_object_pointer<_DecayFp>::value &&
|
||||
(is_same<_ClassT, _DecayA0>::value || is_base_of<_ClassT, _DecayA0>::value)>;
|
||||
|
||||
template <class _Fp, class _A0, class _DecayFp = __decay_t<_Fp>, class _DecayA0 = __decay_t<_A0> >
|
||||
using __enable_if_bullet5 =
|
||||
using __enable_if_bullet5 _LIBCPP_NODEBUG =
|
||||
__enable_if_t<is_member_object_pointer<_DecayFp>::value && __is_reference_wrapper<_DecayA0>::value>;
|
||||
|
||||
template <class _Fp,
|
||||
@ -80,7 +80,7 @@ template <class _Fp,
|
||||
class _DecayFp = __decay_t<_Fp>,
|
||||
class _DecayA0 = __decay_t<_A0>,
|
||||
class _ClassT = typename __member_pointer_class_type<_DecayFp>::type>
|
||||
using __enable_if_bullet6 =
|
||||
using __enable_if_bullet6 _LIBCPP_NODEBUG =
|
||||
__enable_if_t<is_member_object_pointer<_DecayFp>::value &&
|
||||
!(is_same<_ClassT, _DecayA0>::value || is_base_of<_ClassT, _DecayA0>::value) &&
|
||||
!__is_reference_wrapper<_DecayA0>::value>;
|
||||
@ -159,7 +159,7 @@ struct __invokable_r {
|
||||
|
||||
// FIXME: Check that _Ret, _Fp, and _Args... are all complete types, cv void,
|
||||
// or incomplete array types as required by the standard.
|
||||
using _Result = decltype(__try_call<_Fp, _Args...>(0));
|
||||
using _Result _LIBCPP_NODEBUG = decltype(__try_call<_Fp, _Args...>(0));
|
||||
|
||||
using type = __conditional_t<_IsNotSame<_Result, __nat>::value,
|
||||
__conditional_t<is_void<_Ret>::value, true_type, __is_core_convertible<_Result, _Ret> >,
|
||||
@ -167,7 +167,7 @@ struct __invokable_r {
|
||||
static const bool value = type::value;
|
||||
};
|
||||
template <class _Fp, class... _Args>
|
||||
using __invokable = __invokable_r<void, _Fp, _Args...>;
|
||||
using __invokable _LIBCPP_NODEBUG = __invokable_r<void, _Fp, _Args...>;
|
||||
|
||||
template <bool _IsInvokable, bool _IsCVVoid, class _Ret, class _Fp, class... _Args>
|
||||
struct __nothrow_invokable_r_imp {
|
||||
@ -199,11 +199,12 @@ struct __nothrow_invokable_r_imp<true, true, _Ret, _Fp, _Args...> {
|
||||
};
|
||||
|
||||
template <class _Ret, class _Fp, class... _Args>
|
||||
using __nothrow_invokable_r =
|
||||
using __nothrow_invokable_r _LIBCPP_NODEBUG =
|
||||
__nothrow_invokable_r_imp<__invokable_r<_Ret, _Fp, _Args...>::value, is_void<_Ret>::value, _Ret, _Fp, _Args...>;
|
||||
|
||||
template <class _Fp, class... _Args>
|
||||
using __nothrow_invokable = __nothrow_invokable_r_imp<__invokable<_Fp, _Args...>::value, true, void, _Fp, _Args...>;
|
||||
using __nothrow_invokable _LIBCPP_NODEBUG =
|
||||
__nothrow_invokable_r_imp<__invokable<_Fp, _Args...>::value, true, void, _Fp, _Args...>;
|
||||
|
||||
template <class _Fp, class... _Args>
|
||||
struct __invoke_of
|
||||
|
@ -31,8 +31,8 @@ _LIBCPP_BEGIN_NAMESPACE_STD
|
||||
// considered bit-castable.
|
||||
template <class _From, class _To>
|
||||
struct __is_always_bitcastable {
|
||||
using _UnqualFrom = __remove_cv_t<_From>;
|
||||
using _UnqualTo = __remove_cv_t<_To>;
|
||||
using _UnqualFrom _LIBCPP_NODEBUG = __remove_cv_t<_From>;
|
||||
using _UnqualTo _LIBCPP_NODEBUG = __remove_cv_t<_To>;
|
||||
|
||||
// clang-format off
|
||||
static const bool value =
|
||||
|
@ -21,7 +21,7 @@
|
||||
_LIBCPP_BEGIN_NAMESPACE_STD
|
||||
|
||||
template <class _CharT>
|
||||
using _IsCharLikeType = _And<is_standard_layout<_CharT>, is_trivial<_CharT> >;
|
||||
using _IsCharLikeType _LIBCPP_NODEBUG = _And<is_standard_layout<_CharT>, is_trivial<_CharT> >;
|
||||
|
||||
_LIBCPP_END_NAMESPACE_STD
|
||||
|
||||
|
@ -80,7 +80,7 @@ struct __libcpp_is_trivially_equality_comparable_impl<_Tp*, _Up*>
|
||||
};
|
||||
|
||||
template <class _Tp, class _Up>
|
||||
using __libcpp_is_trivially_equality_comparable =
|
||||
using __libcpp_is_trivially_equality_comparable _LIBCPP_NODEBUG =
|
||||
__libcpp_is_trivially_equality_comparable_impl<__remove_cv_t<_Tp>, __remove_cv_t<_Up> >;
|
||||
|
||||
_LIBCPP_END_NAMESPACE_STD
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user