diff options
Diffstat (limited to 'libcxx/include/array')
| -rw-r--r-- | libcxx/include/array | 185 |
1 files changed, 95 insertions, 90 deletions
diff --git a/libcxx/include/array b/libcxx/include/array index 99b38d049e12..516d96538f5a 100644 --- a/libcxx/include/array +++ b/libcxx/include/array @@ -111,60 +111,63 @@ template <size_t I, class T, size_t N> const T&& get(const array<T, N>&&) noexce */ -#include <__algorithm/equal.h> -#include <__algorithm/fill_n.h> -#include <__algorithm/lexicographical_compare.h> -#include <__algorithm/lexicographical_compare_three_way.h> -#include <__algorithm/swap_ranges.h> -#include <__assert> -#include <__config> -#include <__cstddef/ptrdiff_t.h> -#include <__fwd/array.h> -#include <__iterator/reverse_iterator.h> -#include <__iterator/static_bounded_iter.h> -#include <__iterator/wrap_iter.h> -#include <__tuple/sfinae_helpers.h> -#include <__type_traits/conditional.h> -#include <__type_traits/conjunction.h> -#include <__type_traits/enable_if.h> -#include <__type_traits/is_array.h> -#include <__type_traits/is_const.h> -#include <__type_traits/is_constructible.h> -#include <__type_traits/is_nothrow_constructible.h> -#include <__type_traits/is_same.h> -#include <__type_traits/is_swappable.h> -#include <__type_traits/is_trivially_relocatable.h> -#include <__type_traits/remove_cv.h> -#include <__utility/empty.h> -#include <__utility/integer_sequence.h> -#include <__utility/move.h> -#include <__utility/unreachable.h> -#include <stdexcept> -#include <version> +#if __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS) +# include <__cxx03/array> +#else +# include <__algorithm/equal.h> +# include <__algorithm/fill_n.h> +# include <__algorithm/lexicographical_compare.h> +# include <__algorithm/lexicographical_compare_three_way.h> +# include <__algorithm/swap_ranges.h> +# include <__assert> +# include <__config> +# include <__cstddef/ptrdiff_t.h> +# include <__fwd/array.h> +# include <__iterator/reverse_iterator.h> +# include <__iterator/static_bounded_iter.h> +# include <__iterator/wrap_iter.h> +# include <__tuple/sfinae_helpers.h> +# include <__type_traits/conditional.h> +# include <__type_traits/conjunction.h> +# include <__type_traits/enable_if.h> +# include <__type_traits/is_array.h> +# include <__type_traits/is_const.h> +# include <__type_traits/is_constructible.h> +# include <__type_traits/is_nothrow_constructible.h> +# include <__type_traits/is_same.h> +# include <__type_traits/is_swappable.h> +# include <__type_traits/is_trivially_relocatable.h> +# include <__type_traits/remove_cv.h> +# include <__utility/empty.h> +# include <__utility/integer_sequence.h> +# include <__utility/move.h> +# include <__utility/unreachable.h> +# include <stdexcept> +# include <version> // standard-mandated includes // [iterator.range] -#include <__iterator/access.h> -#include <__iterator/data.h> -#include <__iterator/empty.h> -#include <__iterator/reverse_access.h> -#include <__iterator/size.h> +# include <__iterator/access.h> +# include <__iterator/data.h> +# include <__iterator/empty.h> +# include <__iterator/reverse_access.h> +# include <__iterator/size.h> // [array.syn] -#include <compare> -#include <initializer_list> +# include <compare> +# include <initializer_list> // [tuple.helper] -#include <__tuple/tuple_element.h> -#include <__tuple/tuple_size.h> +# include <__tuple/tuple_element.h> +# include <__tuple/tuple_size.h> -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif +# if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +# endif _LIBCPP_PUSH_MACROS -#include <__undef_macros> +# include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD @@ -179,16 +182,16 @@ struct _LIBCPP_TEMPLATE_VIS array { using const_reference = const value_type&; using pointer = value_type*; using const_pointer = const value_type*; -#if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY) +# if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY) using iterator = __static_bounded_iter<pointer, _Size>; using const_iterator = __static_bounded_iter<const_pointer, _Size>; -#elif defined(_LIBCPP_ABI_USE_WRAP_ITER_IN_STD_ARRAY) +# elif defined(_LIBCPP_ABI_USE_WRAP_ITER_IN_STD_ARRAY) using iterator = __wrap_iter<pointer>; using const_iterator = __wrap_iter<const_pointer>; -#else +# else using iterator = pointer; using const_iterator = const_pointer; -#endif +# endif using size_type = size_t; using difference_type = ptrdiff_t; using reverse_iterator = std::reverse_iterator<iterator>; @@ -207,32 +210,32 @@ struct _LIBCPP_TEMPLATE_VIS array { // iterators: _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 iterator begin() _NOEXCEPT { -#if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY) +# if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY) return std::__make_static_bounded_iter<_Size>(data(), data()); -#else +# else return iterator(data()); -#endif +# endif } _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_iterator begin() const _NOEXCEPT { -#if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY) +# if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY) return std::__make_static_bounded_iter<_Size>(data(), data()); -#else +# else return const_iterator(data()); -#endif +# endif } _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 iterator end() _NOEXCEPT { -#if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY) +# if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY) return std::__make_static_bounded_iter<_Size>(data() + _Size, data()); -#else +# else return iterator(data() + _Size); -#endif +# endif } _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_iterator end() const _NOEXCEPT { -#if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY) +# if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY) return std::__make_static_bounded_iter<_Size>(data() + _Size, data()); -#else +# else return const_iterator(data() + _Size); -#endif +# endif } _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator rbegin() _NOEXCEPT { @@ -302,16 +305,16 @@ struct _LIBCPP_TEMPLATE_VIS array<_Tp, 0> { using const_reference = const value_type&; using pointer = value_type*; using const_pointer = const value_type*; -#if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY) +# if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY) using iterator = __static_bounded_iter<pointer, 0>; using const_iterator = __static_bounded_iter<const_pointer, 0>; -#elif defined(_LIBCPP_ABI_USE_WRAP_ITER_IN_STD_ARRAY) +# elif defined(_LIBCPP_ABI_USE_WRAP_ITER_IN_STD_ARRAY) using iterator = __wrap_iter<pointer>; using const_iterator = __wrap_iter<const_pointer>; -#else +# else using iterator = pointer; using const_iterator = const_pointer; -#endif +# endif using size_type = size_t; using difference_type = ptrdiff_t; using reverse_iterator = std::reverse_iterator<iterator>; @@ -338,32 +341,32 @@ struct _LIBCPP_TEMPLATE_VIS array<_Tp, 0> { // iterators: _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 iterator begin() _NOEXCEPT { -#if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY) +# if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY) return std::__make_static_bounded_iter<0>(data(), data()); -#else +# else return iterator(data()); -#endif +# endif } _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_iterator begin() const _NOEXCEPT { -#if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY) +# if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY) return std::__make_static_bounded_iter<0>(data(), data()); -#else +# else return const_iterator(data()); -#endif +# endif } _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 iterator end() _NOEXCEPT { -#if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY) +# if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY) return std::__make_static_bounded_iter<0>(data(), data()); -#else +# else return iterator(data()); -#endif +# endif } _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 const_iterator end() const _NOEXCEPT { -#if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY) +# if defined(_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY) return std::__make_static_bounded_iter<0>(data(), data()); -#else +# else return const_iterator(data()); -#endif +# endif } _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator rbegin() _NOEXCEPT { @@ -433,10 +436,10 @@ struct _LIBCPP_TEMPLATE_VIS array<_Tp, 0> { } }; -#if _LIBCPP_STD_VER >= 17 +# if _LIBCPP_STD_VER >= 17 template <class _Tp, class... _Args, class = enable_if_t<__all<_IsSame<_Tp, _Args>::value...>::value> > array(_Tp, _Args...) -> array<_Tp, 1 + sizeof...(_Args)>; -#endif +# endif template <class _Tp, size_t _Size> inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool @@ -444,7 +447,7 @@ operator==(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y) { return std::equal(__x.begin(), __x.end(), __y.begin()); } -#if _LIBCPP_STD_VER <= 17 +# if _LIBCPP_STD_VER <= 17 template <class _Tp, size_t _Size> inline _LIBCPP_HIDE_FROM_ABI bool operator!=(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y) { @@ -471,7 +474,7 @@ inline _LIBCPP_HIDE_FROM_ABI bool operator>=(const array<_Tp, _Size>& __x, const return !(__x < __y); } -#else // _LIBCPP_STD_VER <= 17 +# else // _LIBCPP_STD_VER <= 17 template <class _Tp, size_t _Size> _LIBCPP_HIDE_FROM_ABI constexpr __synth_three_way_result<_Tp> @@ -479,7 +482,7 @@ operator<=>(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y) { return std::lexicographical_compare_three_way(__x.begin(), __x.end(), __y.begin(), __y.end(), std::__synth_three_way); } -#endif // _LIBCPP_STD_VER <= 17 +# endif // _LIBCPP_STD_VER <= 17 template <class _Tp, size_t _Size, __enable_if_t<_Size == 0 || __is_swappable_v<_Tp>, int> = 0> inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void swap(array<_Tp, _Size>& __x, array<_Tp, _Size>& __y) @@ -520,7 +523,7 @@ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const _Tp&& get(const return std::move(__a.__elems_[_Ip]); } -#if _LIBCPP_STD_VER >= 20 +# if _LIBCPP_STD_VER >= 20 template <typename _Tp, size_t _Size, size_t... _Index> _LIBCPP_HIDE_FROM_ABI constexpr array<remove_cv_t<_Tp>, _Size> @@ -550,19 +553,21 @@ to_array(_Tp (&&__arr)[_Size]) noexcept(is_nothrow_move_constructible_v<_Tp>) { return std::__to_array_rvalue_impl(std::move(__arr), make_index_sequence<_Size>()); } -#endif // _LIBCPP_STD_VER >= 20 +# endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS -#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 -# include <algorithm> -# include <concepts> -# include <cstdlib> -# include <iterator> -# include <type_traits> -# include <utility> -#endif +# if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include <algorithm> +# include <concepts> +# include <cstdlib> +# include <iterator> +# include <new> +# include <type_traits> +# include <utility> +# endif +#endif // __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS) #endif // _LIBCPP_ARRAY |
