30#ifndef _GLIBCXX_EXPERIMENTAL_ARRAY
31#define _GLIBCXX_EXPERIMENTAL_ARRAY 1
33#pragma GCC system_header
37#if __cplusplus >= 201402L
42namespace std _GLIBCXX_VISIBILITY(default)
44_GLIBCXX_BEGIN_NAMESPACE_VERSION
48inline namespace fundamentals_v2
50#define __cpp_lib_experimental_make_array 201505
61template<
typename _Dest,
typename... _Types>
62 struct __make_array_elem
67template<
typename... _Types>
68 struct __make_array_elem<void, _Types...>
69 : common_type<_Types...>
75 template <
typename _Up>
76 struct __is_reference_wrapper<reference_wrapper<_Up>> :
true_type
79 static_assert(!__or_<__is_reference_wrapper<decay_t<_Types>>...>::value,
80 "make_array must be used with an explicit target type when"
81 "any of the arguments is a reference_wrapper");
85template <
typename _Dest = void,
typename... _Types>
87 array<
typename __make_array_elem<_Dest, _Types...>::type,
sizeof...(_Types)>
90 return {{ std::forward<_Types>(__t)... }};
93template <
typename _Tp,
size_t _Nm,
size_t... _Idx>
97 return {{__a[_Idx]...}};
101template <
typename _Tp,
size_t _Nm>
102 constexpr array<remove_cv_t<_Tp>, _Nm>
113_GLIBCXX_END_NAMESPACE_VERSION
__bool_constant< true > true_type
The type used as a compile-time boolean with true value.
__bool_constant< false > false_type
The type used as a compile-time boolean with false value.
constexpr array< typename __make_array_elem< _Dest, _Types... >::type, sizeof...(_Types)> make_array(_Types &&... __t)
Create a std::array from a variable-length list of arguments.
constexpr array< remove_cv_t< _Tp >, _Nm > to_array(_Tp(&__a)[_Nm]) noexcept(is_nothrow_constructible< remove_cv_t< _Tp >, _Tp & >::value)
Create a std::array from an array.
ISO C++ entities toplevel namespace is std.
make_integer_sequence< size_t, _Num > make_index_sequence
Alias template make_index_sequence.
A standard container for storing a fixed size sequence of elements.
Class template integer_sequence.