Skip to content

Commit a318ae9

Browse files
committed
Revert to libc++ pointer_traits::pointer_to with necessary cast
1 parent b2fc084 commit a318ae9

File tree

1 file changed

+11
-59
lines changed

1 file changed

+11
-59
lines changed

libcxx/include/forward_list

+11-59
Original file line numberDiff line numberDiff line change
@@ -296,16 +296,8 @@ struct __forward_node_traits {
296296
# endif
297297

298298
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI static __begin_node_pointer __as_iter_node(__node_pointer __p) {
299-
# ifdef _LIBCPP_CXX03_LANG
300-
return static_cast<__begin_node_pointer>(__p);
301-
# else
302-
if constexpr (std::is_pointer<__begin_node_pointer>::value) {
303-
return static_cast<__begin_node_pointer>(__p);
304-
} else {
305-
return __p ? __begin_node_pointer::pointer_to(*static_cast<__begin_node*>(std::addressof(*__p)))
306-
: static_cast<__begin_node_pointer>(nullptr);
307-
}
308-
# endif
299+
return __p ? pointer_traits<__begin_node_pointer>::pointer_to(*static_cast<__begin_node*>(std::addressof(*__p)))
300+
: static_cast<__begin_node_pointer>(nullptr);
309301
}
310302
};
311303

@@ -320,16 +312,9 @@ struct __forward_begin_node {
320312
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_begin_node(pointer __n) : __next_(__n) {}
321313

322314
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __next_as_begin() const {
323-
# ifdef _LIBCPP_CXX03_LANG
324-
return static_cast<__begin_node_pointer>(__next_);
325-
# else
326-
if constexpr (std::is_pointer<__begin_node_pointer>::value) {
327-
return static_cast<__begin_node_pointer>(__next_);
328-
} else {
329-
return __next_ ? __begin_node_pointer::pointer_to(*static_cast<__forward_begin_node*>(std::addressof(*__next_)))
330-
: static_cast<__begin_node_pointer>(nullptr);
331-
}
332-
# endif
315+
return __next_ ? pointer_traits<__begin_node_pointer>::pointer_to(
316+
*static_cast<__forward_begin_node*>(std::addressof(*__next_)))
317+
: static_cast<__begin_node_pointer>(nullptr);
333318
}
334319
};
335320

@@ -385,17 +370,8 @@ class _LIBCPP_TEMPLATE_VIS __forward_list_iterator {
385370

386371
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __get_begin() const { return __ptr_; }
387372
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __node_pointer __get_unsafe_node_pointer() const {
388-
# ifdef _LIBCPP_CXX03_LANG
389-
return static_cast<__node_pointer>(__ptr_);
390-
# else
391-
if constexpr (std::is_pointer<__node_pointer>::value) {
392-
return static_cast<__node_pointer>(__ptr_);
393-
} else {
394-
return __ptr_ ? __node_pointer::pointer_to(
395-
*static_cast<__node_type*>(const_cast<__begin_node_type*>(std::addressof(*__ptr_))))
396-
: static_cast<__node_pointer>(nullptr);
397-
}
398-
# endif
373+
return __ptr_ ? pointer_traits<__node_pointer>::pointer_to(*static_cast<__node_type*>(std::addressof(*__ptr_)))
374+
: static_cast<__node_pointer>(nullptr);
399375
}
400376

401377
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_list_iterator(nullptr_t) _NOEXCEPT
@@ -464,17 +440,8 @@ class _LIBCPP_TEMPLATE_VIS __forward_list_const_iterator {
464440

465441
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __get_begin() const { return __ptr_; }
466442
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __node_pointer __get_unsafe_node_pointer() const {
467-
# ifdef _LIBCPP_CXX03_LANG
468-
return static_cast<__node_pointer>(__ptr_);
469-
# else
470-
if constexpr (std::is_pointer<__node_pointer>::value) {
471-
return static_cast<__node_pointer>(__ptr_);
472-
} else {
473-
return __ptr_ ? __node_pointer::pointer_to(
474-
*static_cast<__node_type*>(const_cast<__begin_node_type*>(std::addressof(*__ptr_))))
475-
: static_cast<__node_pointer>(nullptr);
476-
}
477-
# endif
443+
return __ptr_ ? pointer_traits<__node_pointer>::pointer_to(*static_cast<__node_type*>(std::addressof(*__ptr_)))
444+
: static_cast<__node_pointer>(nullptr);
478445
}
479446

480447
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI explicit __forward_list_const_iterator(nullptr_t) _NOEXCEPT
@@ -547,27 +514,12 @@ protected:
547514
_LIBCPP_COMPRESSED_PAIR(__begin_node, __before_begin_, __node_allocator, __alloc_);
548515

549516
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __before_begin() _NOEXCEPT {
550-
# ifdef _LIBCPP_CXX03_LANG
551517
return pointer_traits<__begin_node_pointer>::pointer_to(__before_begin_);
552-
# else
553-
if constexpr (std::is_pointer<__begin_node_pointer>::value) {
554-
return std::addressof(__before_begin_);
555-
} else {
556-
return __begin_node_pointer::pointer_to(*std::addressof(__before_begin_));
557-
}
558-
# endif
559518
}
560519

561520
_LIBCPP_CONSTEXPR_SINCE_CXX26 _LIBCPP_HIDE_FROM_ABI __begin_node_pointer __before_begin() const _NOEXCEPT {
562-
# ifdef _LIBCPP_CXX03_LANG
563-
return pointer_traits<__begin_node_pointer>::pointer_to(const_cast<__begin_node&>(__before_begin_));
564-
# else
565-
if constexpr (std::is_pointer<__begin_node_pointer>::value) {
566-
return const_cast<__begin_node*>(std::addressof(__before_begin_));
567-
} else {
568-
return __begin_node_pointer::pointer_to(*const_cast<__begin_node*>(std::addressof(__before_begin_)));
569-
}
570-
# endif
521+
return pointer_traits<__begin_node_pointer>::pointer_to(
522+
*const_cast<__begin_node*>(std::addressof(__before_begin_)));
571523
}
572524

573525
typedef __forward_list_iterator<__node_pointer> iterator;

0 commit comments

Comments
 (0)