Linux sh52.ich-4.com 5.14.0-611.26.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Jan 29 05:24:47 EST 2026 x86_64
LiteSpeed
Server IP : 198.143.147.58 & Your IP : 216.73.217.21
Domains :
Cant Read [ /etc/named.conf ]
User : actualbuzz
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
opt /
rh /
gcc-toolset-12 /
root /
usr /
include /
c++ /
12 /
Delete
Unzip
Name
Size
Permission
Date
Action
backward
[ DIR ]
drwxr-xr-x
2026-02-03 15:08
bits
[ DIR ]
drwxr-xr-x
2026-02-03 15:08
debug
[ DIR ]
drwxr-xr-x
2026-02-03 15:08
decimal
[ DIR ]
drwxr-xr-x
2026-02-03 15:08
experimental
[ DIR ]
drwxr-xr-x
2026-02-03 15:08
ext
[ DIR ]
drwxr-xr-x
2026-02-03 15:08
parallel
[ DIR ]
drwxr-xr-x
2026-02-03 15:08
pstl
[ DIR ]
drwxr-xr-x
2026-02-03 15:08
tr1
[ DIR ]
drwxr-xr-x
2026-02-03 15:08
tr2
[ DIR ]
drwxr-xr-x
2026-02-03 15:08
x86_64-redhat-linux
[ DIR ]
drwxr-xr-x
2024-09-03 14:51
algorithm
2.94
KB
-rw-r--r--
2024-09-03 14:51
any
18.38
KB
-rw-r--r--
2024-09-03 14:51
array
14.61
KB
-rw-r--r--
2024-09-03 14:51
atomic
46.67
KB
-rw-r--r--
2024-09-03 14:51
barrier
7.57
KB
-rw-r--r--
2024-09-03 14:51
bit
13.89
KB
-rw-r--r--
2024-09-03 14:51
bitset
44.92
KB
-rw-r--r--
2024-09-03 14:51
cassert
1.61
KB
-rw-r--r--
2024-09-03 14:51
ccomplex
1.3
KB
-rw-r--r--
2024-09-03 14:51
cctype
2.35
KB
-rw-r--r--
2024-09-03 14:51
cerrno
1.73
KB
-rw-r--r--
2024-09-03 14:51
cfenv
2
KB
-rw-r--r--
2024-09-03 14:51
cfloat
1.84
KB
-rw-r--r--
2024-09-03 14:51
charconv
20.49
KB
-rw-r--r--
2024-09-03 14:51
chrono
58.31
KB
-rw-r--r--
2024-09-03 14:51
cinttypes
2.11
KB
-rw-r--r--
2024-09-03 14:51
ciso646
1.43
KB
-rw-r--r--
2024-09-03 14:51
climits
1.87
KB
-rw-r--r--
2024-09-03 14:51
clocale
1.86
KB
-rw-r--r--
2024-09-03 14:51
cmath
48.23
KB
-rw-r--r--
2024-09-03 14:51
codecvt
5.15
KB
-rw-r--r--
2024-09-03 14:51
compare
36.77
KB
-rw-r--r--
2024-09-03 14:51
complex
54.63
KB
-rw-r--r--
2024-09-03 14:51
complex.h
1.56
KB
-rw-r--r--
2024-09-03 14:51
concepts
11.94
KB
-rw-r--r--
2024-09-03 14:51
condition_variable
12.48
KB
-rw-r--r--
2024-09-03 14:51
coroutine
9.58
KB
-rw-r--r--
2024-09-03 14:51
csetjmp
1.9
KB
-rw-r--r--
2024-09-03 14:51
csignal
1.81
KB
-rw-r--r--
2024-09-03 14:51
cstdalign
1.37
KB
-rw-r--r--
2024-09-03 14:51
cstdarg
1.82
KB
-rw-r--r--
2024-09-03 14:51
cstdbool
1.37
KB
-rw-r--r--
2024-09-03 14:51
cstddef
6.11
KB
-rw-r--r--
2024-09-03 14:51
cstdint
2.28
KB
-rw-r--r--
2024-09-03 14:51
cstdio
4.33
KB
-rw-r--r--
2024-09-03 14:51
cstdlib
6.18
KB
-rw-r--r--
2024-09-03 14:51
cstring
3.08
KB
-rw-r--r--
2024-09-03 14:51
ctgmath
1.33
KB
-rw-r--r--
2024-09-03 14:51
ctime
2.24
KB
-rw-r--r--
2024-09-03 14:51
cuchar
2.84
KB
-rw-r--r--
2024-09-03 14:51
cwchar
6.39
KB
-rw-r--r--
2024-09-03 14:51
cwctype
2.73
KB
-rw-r--r--
2024-09-03 14:51
cxxabi.h
21.76
KB
-rw-r--r--
2024-09-03 14:51
deque
4.35
KB
-rw-r--r--
2024-09-03 14:51
exception
5.29
KB
-rw-r--r--
2024-09-03 14:51
execution
1.76
KB
-rw-r--r--
2024-09-03 14:51
expected
33.11
KB
-rw-r--r--
2024-09-03 14:51
fenv.h
1.97
KB
-rw-r--r--
2024-09-03 14:51
filesystem
1.61
KB
-rw-r--r--
2024-09-03 14:51
forward_list
2.63
KB
-rw-r--r--
2024-09-03 14:51
fstream
39.73
KB
-rw-r--r--
2024-09-03 14:51
functional
42.77
KB
-rw-r--r--
2024-09-03 14:51
future
51.11
KB
-rw-r--r--
2024-09-03 14:51
initializer_list
2.97
KB
-rw-r--r--
2024-09-03 14:51
iomanip
16.16
KB
-rw-r--r--
2024-09-03 14:51
ios
1.56
KB
-rw-r--r--
2024-09-03 14:51
iosfwd
8.16
KB
-rw-r--r--
2024-09-03 14:51
iostream
2.63
KB
-rw-r--r--
2024-09-03 14:51
istream
33.3
KB
-rw-r--r--
2024-09-03 14:51
iterator
2.69
KB
-rw-r--r--
2024-09-03 14:51
latch
2.67
KB
-rw-r--r--
2024-09-03 14:51
limits
70.04
KB
-rw-r--r--
2024-09-03 14:51
list
3.57
KB
-rw-r--r--
2024-09-03 14:51
locale
1.45
KB
-rw-r--r--
2024-09-03 14:51
map
4.04
KB
-rw-r--r--
2024-09-03 14:51
math.h
4.47
KB
-rw-r--r--
2024-09-03 14:51
memory
4.44
KB
-rw-r--r--
2024-09-03 14:51
memory_resource
25.26
KB
-rw-r--r--
2024-09-03 14:51
mutex
25.4
KB
-rw-r--r--
2024-09-03 14:51
new
8.45
KB
-rw-r--r--
2024-09-03 14:51
numbers
6.07
KB
-rw-r--r--
2024-09-03 14:51
numeric
25.37
KB
-rw-r--r--
2024-09-03 14:51
optional
43.4
KB
-rw-r--r--
2024-09-03 14:51
ostream
25.31
KB
-rw-r--r--
2024-09-03 14:51
queue
2.41
KB
-rw-r--r--
2024-09-03 14:51
random
1.65
KB
-rw-r--r--
2024-09-03 14:51
ranges
117.31
KB
-rw-r--r--
2024-09-03 14:51
ratio
19.81
KB
-rw-r--r--
2024-09-03 14:51
regex
3.04
KB
-rw-r--r--
2024-09-03 14:51
scoped_allocator
17.24
KB
-rw-r--r--
2024-09-03 14:51
semaphore
2.93
KB
-rw-r--r--
2024-09-03 14:51
set
3.9
KB
-rw-r--r--
2024-09-03 14:51
shared_mutex
24.02
KB
-rw-r--r--
2024-09-03 14:51
source_location
2.68
KB
-rw-r--r--
2024-09-03 14:51
span
12.82
KB
-rw-r--r--
2024-09-03 14:51
spanstream
12.07
KB
-rw-r--r--
2024-09-03 14:51
sstream
38.31
KB
-rw-r--r--
2024-09-03 14:51
stack
2.33
KB
-rw-r--r--
2024-09-03 14:51
stacktrace
21.02
KB
-rw-r--r--
2024-09-03 14:51
stdatomic.h
3.97
KB
-rw-r--r--
2024-09-03 14:51
stdexcept
9.65
KB
-rw-r--r--
2024-09-03 14:51
stdlib.h
2.2
KB
-rw-r--r--
2024-09-03 14:51
stop_token
15.61
KB
-rw-r--r--
2024-09-03 14:51
streambuf
29.19
KB
-rw-r--r--
2024-09-03 14:51
string
4.69
KB
-rw-r--r--
2024-09-03 14:51
string_view
25.55
KB
-rw-r--r--
2024-09-03 14:51
syncstream
8.13
KB
-rw-r--r--
2024-09-03 14:51
system_error
14.65
KB
-rw-r--r--
2024-09-03 14:51
tgmath.h
1.33
KB
-rw-r--r--
2024-09-03 14:51
thread
6.68
KB
-rw-r--r--
2024-09-03 14:51
tuple
61.37
KB
-rw-r--r--
2024-09-03 14:51
type_traits
107.79
KB
-rw-r--r--
2024-09-03 14:51
typeindex
3.43
KB
-rw-r--r--
2024-09-03 14:51
typeinfo
8.11
KB
-rw-r--r--
2024-09-03 14:51
unordered_map
3.62
KB
-rw-r--r--
2024-09-03 14:51
unordered_set
3.48
KB
-rw-r--r--
2024-09-03 14:51
utility
6.89
KB
-rw-r--r--
2024-09-03 14:51
valarray
39.82
KB
-rw-r--r--
2024-09-03 14:51
variant
64.07
KB
-rw-r--r--
2024-09-03 14:51
vector
4.7
KB
-rw-r--r--
2024-09-03 14:51
version
10.98
KB
-rw-r--r--
2024-09-03 14:51
Save
Rename
// <array> -*- C++ -*- // Copyright (C) 2007-2022 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the // terms of the GNU General Public License as published by the // Free Software Foundation; either version 3, or (at your option) // any later version. // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // Under Section 7 of GPL version 3, you are granted additional // permissions described in the GCC Runtime Library Exception, version // 3.1, as published by the Free Software Foundation. // You should have received a copy of the GNU General Public License and // a copy of the GCC Runtime Library Exception along with this program; // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see // <http://www.gnu.org/licenses/>. /** @file include/array * This is a Standard C++ Library header. */ #ifndef _GLIBCXX_ARRAY #define _GLIBCXX_ARRAY 1 #pragma GCC system_header #if __cplusplus < 201103L # include <bits/c++0x_warning.h> #else #include <compare> #include <initializer_list> #include <type_traits> #include <bits/functexcept.h> #include <bits/stl_algobase.h> #include <bits/range_access.h> // std::begin, std::end etc. #include <bits/utility.h> // std::index_sequence, std::tuple_size #include <debug/assertions.h> namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION template<typename _Tp, std::size_t _Nm> struct __array_traits { typedef _Tp _Type[_Nm]; typedef __is_swappable<_Tp> _Is_swappable; typedef __is_nothrow_swappable<_Tp> _Is_nothrow_swappable; static constexpr _Tp& _S_ref(const _Type& __t, std::size_t __n) noexcept { return const_cast<_Tp&>(__t[__n]); } static constexpr _Tp* _S_ptr(const _Type& __t) noexcept { return const_cast<_Tp*>(__t); } }; template<typename _Tp> struct __array_traits<_Tp, 0> { struct _Type { }; typedef true_type _Is_swappable; typedef true_type _Is_nothrow_swappable; static constexpr _Tp& _S_ref(const _Type&, std::size_t) noexcept { return *static_cast<_Tp*>(nullptr); } static constexpr _Tp* _S_ptr(const _Type&) noexcept { return nullptr; } }; /** * @brief A standard container for storing a fixed size sequence of elements. * * @ingroup sequences * * Meets the requirements of a <a href="tables.html#65">container</a>, a * <a href="tables.html#66">reversible container</a>, and a * <a href="tables.html#67">sequence</a>. * * Sets support random access iterators. * * @tparam Tp Type of element. Required to be a complete type. * @tparam Nm Number of elements. */ template<typename _Tp, std::size_t _Nm> struct array { typedef _Tp value_type; typedef value_type* pointer; typedef const value_type* const_pointer; typedef value_type& reference; typedef const value_type& const_reference; typedef value_type* iterator; typedef const value_type* const_iterator; typedef std::size_t size_type; typedef std::ptrdiff_t difference_type; typedef std::reverse_iterator<iterator> reverse_iterator; typedef std::reverse_iterator<const_iterator> const_reverse_iterator; // Support for zero-sized arrays mandatory. typedef __array_traits<_Tp, _Nm> _AT_Type; typename _AT_Type::_Type _M_elems; // No explicit construct/copy/destroy for aggregate type. // DR 776. _GLIBCXX20_CONSTEXPR void fill(const value_type& __u) { std::fill_n(begin(), size(), __u); } _GLIBCXX20_CONSTEXPR void swap(array& __other) noexcept(_AT_Type::_Is_nothrow_swappable::value) { std::swap_ranges(begin(), end(), __other.begin()); } // Iterators. [[__gnu__::__const__, __nodiscard__]] _GLIBCXX17_CONSTEXPR iterator begin() noexcept { return iterator(data()); } [[__nodiscard__]] _GLIBCXX17_CONSTEXPR const_iterator begin() const noexcept { return const_iterator(data()); } [[__gnu__::__const__, __nodiscard__]] _GLIBCXX17_CONSTEXPR iterator end() noexcept { return iterator(data() + _Nm); } [[__nodiscard__]] _GLIBCXX17_CONSTEXPR const_iterator end() const noexcept { return const_iterator(data() + _Nm); } [[__gnu__::__const__, __nodiscard__]] _GLIBCXX17_CONSTEXPR reverse_iterator rbegin() noexcept { return reverse_iterator(end()); } [[__nodiscard__]] _GLIBCXX17_CONSTEXPR const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator(end()); } [[__gnu__::__const__, __nodiscard__]] _GLIBCXX17_CONSTEXPR reverse_iterator rend() noexcept { return reverse_iterator(begin()); } [[__nodiscard__]] _GLIBCXX17_CONSTEXPR const_reverse_iterator rend() const noexcept { return const_reverse_iterator(begin()); } [[__nodiscard__]] _GLIBCXX17_CONSTEXPR const_iterator cbegin() const noexcept { return const_iterator(data()); } [[__nodiscard__]] _GLIBCXX17_CONSTEXPR const_iterator cend() const noexcept { return const_iterator(data() + _Nm); } [[__nodiscard__]] _GLIBCXX17_CONSTEXPR const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator(end()); } [[__nodiscard__]] _GLIBCXX17_CONSTEXPR const_reverse_iterator crend() const noexcept { return const_reverse_iterator(begin()); } // Capacity. [[__gnu__::__const__, __nodiscard__]] constexpr size_type size() const noexcept { return _Nm; } [[__gnu__::__const__, __nodiscard__]] constexpr size_type max_size() const noexcept { return _Nm; } [[__gnu__::__const__, __nodiscard__]] constexpr bool empty() const noexcept { return size() == 0; } // Element access. [[__nodiscard__]] _GLIBCXX17_CONSTEXPR reference operator[](size_type __n) noexcept { __glibcxx_requires_subscript(__n); return _AT_Type::_S_ref(_M_elems, __n); } [[__nodiscard__]] constexpr const_reference operator[](size_type __n) const noexcept { #if __cplusplus >= 201402L __glibcxx_requires_subscript(__n); #endif return _AT_Type::_S_ref(_M_elems, __n); } _GLIBCXX17_CONSTEXPR reference at(size_type __n) { if (__n >= _Nm) std::__throw_out_of_range_fmt(__N("array::at: __n (which is %zu) " ">= _Nm (which is %zu)"), __n, _Nm); return _AT_Type::_S_ref(_M_elems, __n); } constexpr const_reference at(size_type __n) const { // Result of conditional expression must be an lvalue so use // boolean ? lvalue : (throw-expr, lvalue) return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n) : (std::__throw_out_of_range_fmt(__N("array::at: __n (which is %zu) " ">= _Nm (which is %zu)"), __n, _Nm), _AT_Type::_S_ref(_M_elems, 0)); } [[__nodiscard__]] _GLIBCXX17_CONSTEXPR reference front() noexcept { __glibcxx_requires_nonempty(); return *begin(); } [[__nodiscard__]] constexpr const_reference front() const noexcept { #if __cplusplus >= 201402L __glibcxx_requires_nonempty(); #endif return _AT_Type::_S_ref(_M_elems, 0); } [[__nodiscard__]] _GLIBCXX17_CONSTEXPR reference back() noexcept { __glibcxx_requires_nonempty(); return _Nm ? *(end() - 1) : *end(); } [[__nodiscard__]] constexpr const_reference back() const noexcept { #if __cplusplus >= 201402L __glibcxx_requires_nonempty(); #endif return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1) : _AT_Type::_S_ref(_M_elems, 0); } [[__gnu__::__const__, __nodiscard__]] _GLIBCXX17_CONSTEXPR pointer data() noexcept { return _AT_Type::_S_ptr(_M_elems); } [[__nodiscard__]] _GLIBCXX17_CONSTEXPR const_pointer data() const noexcept { return _AT_Type::_S_ptr(_M_elems); } }; #if __cpp_deduction_guides >= 201606 template<typename _Tp, typename... _Up> array(_Tp, _Up...) -> array<enable_if_t<(is_same_v<_Tp, _Up> && ...), _Tp>, 1 + sizeof...(_Up)>; #endif // Array comparisons. template<typename _Tp, std::size_t _Nm> [[__nodiscard__]] _GLIBCXX20_CONSTEXPR inline bool operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) { return std::equal(__one.begin(), __one.end(), __two.begin()); } #if __cpp_lib_three_way_comparison && __cpp_lib_concepts template<typename _Tp, size_t _Nm> [[nodiscard]] constexpr __detail::__synth3way_t<_Tp> operator<=>(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) { if constexpr (_Nm && __is_memcmp_ordered<_Tp>::__value) if (!std::__is_constant_evaluated()) { constexpr size_t __n = _Nm * sizeof(_Tp); return __builtin_memcmp(__a.data(), __b.data(), __n) <=> 0; } for (size_t __i = 0; __i < _Nm; ++__i) { auto __c = __detail::__synth3way(__a[__i], __b[__i]); if (__c != 0) return __c; } return strong_ordering::equal; } #else template<typename _Tp, std::size_t _Nm> [[__nodiscard__]] _GLIBCXX20_CONSTEXPR inline bool operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) { return !(__one == __two); } template<typename _Tp, std::size_t _Nm> [[__nodiscard__]] _GLIBCXX20_CONSTEXPR inline bool operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) { return std::lexicographical_compare(__a.begin(), __a.end(), __b.begin(), __b.end()); } template<typename _Tp, std::size_t _Nm> [[__nodiscard__]] _GLIBCXX20_CONSTEXPR inline bool operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) { return __two < __one; } template<typename _Tp, std::size_t _Nm> [[__nodiscard__]] _GLIBCXX20_CONSTEXPR inline bool operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) { return !(__one > __two); } template<typename _Tp, std::size_t _Nm> [[__nodiscard__]] _GLIBCXX20_CONSTEXPR inline bool operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) { return !(__one < __two); } #endif // three_way_comparison && concepts // Specialized algorithms. template<typename _Tp, std::size_t _Nm> _GLIBCXX20_CONSTEXPR inline #if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 // Constrained free swap overload, see p0185r1 typename enable_if< __array_traits<_Tp, _Nm>::_Is_swappable::value >::type #else void #endif swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two) noexcept(noexcept(__one.swap(__two))) { __one.swap(__two); } #if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 template<typename _Tp, std::size_t _Nm> typename enable_if< !__array_traits<_Tp, _Nm>::_Is_swappable::value>::type swap(array<_Tp, _Nm>&, array<_Tp, _Nm>&) = delete; #endif template<std::size_t _Int, typename _Tp, std::size_t _Nm> [[__nodiscard__]] constexpr _Tp& get(array<_Tp, _Nm>& __arr) noexcept { static_assert(_Int < _Nm, "array index is within bounds"); return __array_traits<_Tp, _Nm>::_S_ref(__arr._M_elems, _Int); } template<std::size_t _Int, typename _Tp, std::size_t _Nm> [[__nodiscard__]] constexpr _Tp&& get(array<_Tp, _Nm>&& __arr) noexcept { static_assert(_Int < _Nm, "array index is within bounds"); return std::move(std::get<_Int>(__arr)); } template<std::size_t _Int, typename _Tp, std::size_t _Nm> [[__nodiscard__]] constexpr const _Tp& get(const array<_Tp, _Nm>& __arr) noexcept { static_assert(_Int < _Nm, "array index is within bounds"); return __array_traits<_Tp, _Nm>::_S_ref(__arr._M_elems, _Int); } template<std::size_t _Int, typename _Tp, std::size_t _Nm> [[__nodiscard__]] constexpr const _Tp&& get(const array<_Tp, _Nm>&& __arr) noexcept { static_assert(_Int < _Nm, "array index is within bounds"); return std::move(std::get<_Int>(__arr)); } #if __cplusplus > 201703L #define __cpp_lib_to_array 201907L template<bool _Move = false, typename _Tp, size_t... _Idx> constexpr array<remove_cv_t<_Tp>, sizeof...(_Idx)> __to_array(_Tp (&__a)[sizeof...(_Idx)], index_sequence<_Idx...>) { if constexpr (_Move) return {{std::move(__a[_Idx])...}}; else return {{__a[_Idx]...}}; } template<typename _Tp, size_t _Nm> [[nodiscard]] constexpr array<remove_cv_t<_Tp>, _Nm> to_array(_Tp (&__a)[_Nm]) noexcept(is_nothrow_constructible_v<_Tp, _Tp&>) { static_assert(!is_array_v<_Tp>); static_assert(is_constructible_v<_Tp, _Tp&>); if constexpr (is_constructible_v<_Tp, _Tp&>) return __to_array(__a, make_index_sequence<_Nm>{}); __builtin_unreachable(); // FIXME: see PR c++/91388 } template<typename _Tp, size_t _Nm> [[nodiscard]] constexpr array<remove_cv_t<_Tp>, _Nm> to_array(_Tp (&&__a)[_Nm]) noexcept(is_nothrow_move_constructible_v<_Tp>) { static_assert(!is_array_v<_Tp>); static_assert(is_move_constructible_v<_Tp>); if constexpr (is_move_constructible_v<_Tp>) return __to_array<1>(__a, make_index_sequence<_Nm>{}); __builtin_unreachable(); // FIXME: see PR c++/91388 } #endif // C++20 // Tuple interface to class template array. /// Partial specialization for std::array template<typename _Tp, size_t _Nm> struct tuple_size<array<_Tp, _Nm>> : public integral_constant<size_t, _Nm> { }; /// Partial specialization for std::array template<size_t _Ind, typename _Tp, size_t _Nm> struct tuple_element<_Ind, array<_Tp, _Nm>> { static_assert(_Ind < _Nm, "array index is in range"); using type = _Tp; }; #if __cplusplus >= 201703L template<typename _Tp, size_t _Nm> inline constexpr size_t tuple_size_v<array<_Tp, _Nm>> = _Nm; template<typename _Tp, size_t _Nm> inline constexpr size_t tuple_size_v<const array<_Tp, _Nm>> = _Nm; #endif template<typename _Tp, size_t _Nm> struct __is_tuple_like_impl<array<_Tp, _Nm>> : true_type { }; _GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif // C++11 #endif // _GLIBCXX_ARRAY