30 #ifndef _GLIBCXX_EXPERIMENTAL_ARRAY 31 #define _GLIBCXX_EXPERIMENTAL_ARRAY 1 33 #ifdef _GLIBCXX_SYSHDR 34 #pragma GCC system_header 39 #if __cplusplus >= 201402L 44 namespace std _GLIBCXX_VISIBILITY(default)
46 _GLIBCXX_BEGIN_NAMESPACE_VERSION
48 namespace experimental
50 inline namespace fundamentals_v2
52 #define __cpp_lib_experimental_make_array 201505 63 template<
typename _Dest,
typename... _Types>
64 struct __make_array_elem
69 template<
typename... _Types>
70 struct __make_array_elem<void, _Types...>
71 : common_type<_Types...>
77 template <
typename _Up>
78 struct __is_reference_wrapper<reference_wrapper<_Up>> :
true_type 81 static_assert(!__or_<__is_reference_wrapper<decay_t<_Types>>...>::value,
82 "make_array must be used with an explicit target type when" 83 "any of the arguments is a reference_wrapper");
87 template <
typename _Dest = void,
typename... _Types>
89 array<
typename __make_array_elem<_Dest, _Types...>::type,
sizeof...(_Types)>
92 return {{ std::forward<_Types>(__t)... }};
95 template <
typename _Tp,
size_t _Nm,
size_t... _Idx>
99 return {{__a[_Idx]...}};
103 template <
typename _Tp,
size_t _Nm>
104 constexpr array<remove_cv_t<_Tp>, _Nm>
115 _GLIBCXX_END_NAMESPACE_VERSION
120 #endif // _GLIBCXX_EXPERIMENTAL_ARRAY make_integer_sequence< size_t, _Num > make_index_sequence
Alias template make_index_sequence.
Class template integer_sequence.
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.
__bool_constant< true > true_type
The type used as a compile-time boolean with true value.
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.
__bool_constant< false > false_type
The type used as a compile-time boolean with false value.
A standard container for storing a fixed size sequence of elements.