Skip to content

Commit d04201c

Browse files
committed
Bring in __pointer types too, there is probably a better way to do this--this is to avoid cluttering up error messages with __iter_aliases substitution failures when an invalid type for optional is passed
1 parent 1d9ac9a commit d04201c

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

libcxx/include/optional

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -617,17 +617,15 @@ struct __optional_iterator_aliases<
617617
_Tp,
618618
__enable_if_t<!(is_reference<_Tp>::value && (is_function<__libcpp_remove_reference_t<_Tp>>::value ||
619619
is_unbounded_array<__libcpp_remove_reference_t<_Tp>>::value))> > {
620-
private:
620+
public:
621621
using __pointer _LIBCPP_NODEBUG = std::add_pointer_t<_Tp>;
622622
using __const_pointer _LIBCPP_NODEBUG = std::add_pointer_t<const _Tp>;
623-
624-
public:
625623
# ifdef _LIBCPP_ABI_BOUNDED_ITERATORS_IN_OPTIONAL
626-
using __iterator _LIBCPP_NODEBUG = __bounded_iter<__wrap_iter<__pointer>>;
627-
using __const_iterator _LIBCPP_NODEBUG = __bounded_iter<__wrap_iter<__const_pointer>>;
624+
using iterator = __bounded_iter<__wrap_iter<__pointer>>;
625+
using const_iterator = __bounded_iter<__wrap_iter<__const_pointer>>;
628626
# else
629-
using __iterator _LIBCPP_NODEBUG = __wrap_iter<__pointer>;
630-
using __const_iterator _LIBCPP_NODEBUG = __wrap_iter<__const_pointer>;
627+
using iterator = __wrap_iter<__pointer>;
628+
using const_iterator = __wrap_iter<__const_pointer>;
631629
# endif
632630
};
633631

@@ -639,14 +637,19 @@ class _LIBCPP_DECLSPEC_EMPTY_BASES optional
639637
private __optional_sfinae_ctor_base_t<_Tp>,
640638
private __optional_sfinae_assign_base_t<_Tp>,
641639
public __optional_iterator_aliases<_Tp> {
642-
using __base _LIBCPP_NODEBUG = __optional_move_assign_base<_Tp>;
640+
using __base _LIBCPP_NODEBUG = __optional_move_assign_base<_Tp>;
641+
using __iter_aliases _LIBCPP_NODEBUG = __optional_iterator_aliases<_Tp>;
642+
# if _LIBCPP_STD_VER >= 26
643+
using typename __iter_aliases::__const_pointer;
644+
using typename __iter_aliases::__pointer;
645+
# endif
643646

644647
public:
645648
using value_type = _Tp;
646649

647650
# if _LIBCPP_STD_VER >= 26
648-
using iterator = __optional_iterator_aliases<_Tp>::__iterator;
649-
using const_iterator = __optional_iterator_aliases<_Tp>::__const_iterator;
651+
using typename __iter_aliases::const_iterator;
652+
using typename __iter_aliases::iterator;
650653
# endif
651654
using __trivially_relocatable _LIBCPP_NODEBUG =
652655
conditional_t<__libcpp_is_trivially_relocatable<_Tp>::value, optional, void>;

0 commit comments

Comments
 (0)