30#ifndef _GLIBCXX_RANGE_ACCESS_H
31#define _GLIBCXX_RANGE_ACCESS_H 1
33#pragma GCC system_header
35#if __cplusplus >= 201103L
37namespace std _GLIBCXX_VISIBILITY(default)
39_GLIBCXX_BEGIN_NAMESPACE_VERSION
46 template<
typename _Container>
56 template<
typename _Container>
66 template<
typename _Container>
76 template<
typename _Container>
85 template<
typename _Tp,
size_t _Nm>
86 inline _GLIBCXX14_CONSTEXPR _Tp*
95 template<
typename _Tp,
size_t _Nm>
96 inline _GLIBCXX14_CONSTEXPR _Tp*
100#if __cplusplus >= 201402L
102 template<
typename _Tp>
class valarray;
104 template<
typename _Tp> _Tp*
begin(valarray<_Tp>&);
105 template<
typename _Tp>
const _Tp*
begin(
const valarray<_Tp>&);
106 template<
typename _Tp> _Tp*
end(valarray<_Tp>&);
107 template<
typename _Tp>
const _Tp*
end(
const valarray<_Tp>&);
114 template<
typename _Container>
115 inline constexpr auto
125 template<
typename _Container>
126 inline constexpr auto
136 template<
typename _Container>
139 {
return __cont.rbegin(); }
146 template<
typename _Container>
149 {
return __cont.rbegin(); }
156 template<
typename _Container>
166 template<
typename _Container>
176 template<
typename _Tp,
size_t _Nm>
177 inline reverse_iterator<_Tp*>
186 template<
typename _Tp,
size_t _Nm>
187 inline reverse_iterator<_Tp*>
196 template<
typename _Tp>
197 inline reverse_iterator<const _Tp*>
206 template<
typename _Tp>
207 inline reverse_iterator<const _Tp*>
216 template<
typename _Container>
226 template<
typename _Container>
233#if __cplusplus > 201402L
234#define __cpp_lib_nonmember_container_access 201411
240 template <
typename _Container>
242 size(
const _Container& __cont) ->
decltype(__cont.size())
243 {
return __cont.size(); }
249 template <
typename _Tp,
size_t _Nm>
251 size(
const _Tp (&)[_Nm])
noexcept
258 template <
typename _Container>
260 empty(
const _Container& __cont) ->
decltype(__cont.empty())
261 {
return __cont.empty(); }
267 template <
typename _Tp,
size_t _Nm>
269 empty(
const _Tp (&)[_Nm])
noexcept
276 template <
typename _Tp>
278 empty(initializer_list<_Tp> __il)
noexcept
279 {
return __il.size() == 0;}
285 template <
typename _Container>
287 data(_Container& __cont) ->
decltype(__cont.data())
288 {
return __cont.data(); }
294 template <
typename _Container>
296 data(
const _Container& __cont) ->
decltype(__cont.data())
297 {
return __cont.data(); }
303 template <
typename _Tp,
size_t _Nm>
305 data(_Tp (&__array)[_Nm])
noexcept
312 template <
typename _Tp>
314 data(initializer_list<_Tp> __il)
noexcept
315 {
return __il.begin(); }
319_GLIBCXX_END_NAMESPACE_VERSION
ISO C++ entities toplevel namespace is std.
constexpr const _Tp * begin(initializer_list< _Tp > __ils) noexcept
Return an iterator pointing to the first element of the initializer_list.
auto crend(const _Container &__cont) -> decltype(std::rend(__cont))
Return a reverse iterator pointing one past the first element of the const container.
auto rend(_Container &__cont) -> decltype(__cont.rend())
Return a reverse iterator pointing one past the first element of the container.
constexpr auto cend(const _Container &__cont) noexcept(noexcept(std::end(__cont))) -> decltype(std::end(__cont))
Return an iterator pointing to one past the last element of the const container.
constexpr const _Tp * end(initializer_list< _Tp > __ils) noexcept
Return an iterator pointing to one past the last element of the initializer_list.
auto crbegin(const _Container &__cont) -> decltype(std::rbegin(__cont))
Return a reverse iterator pointing to the last element of the const container.
auto rbegin(_Container &__cont) -> decltype(__cont.rbegin())
Return a reverse iterator pointing to the last element of the container.
constexpr auto cbegin(const _Container &__cont) noexcept(noexcept(std::begin(__cont))) -> decltype(std::begin(__cont))
Return an iterator pointing to the first element of the const container.