]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/24_iterators/headers/iterator/range_access_c++17.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 24_iterators / headers / iterator / range_access_c++17.cc
CommitLineData
06db9920
JW
1// { dg-options "-std=gnu++17" }
2// { dg-do compile }
3
8d9254fc 4// Copyright (C) 2016-2020 Free Software Foundation, Inc.
06db9920
JW
5//
6// This file is part of the GNU ISO C++ Library. This library is free
7// software; you can redistribute it and/or modify it under the
8// terms of the GNU General Public License as published by the
9// Free Software Foundation; either version 3, or (at your option)
10// any later version.
11
12// This library is distributed in the hope that it will be useful,
13// but WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15// GNU General Public License for more details.
16
17// You should have received a copy of the GNU General Public License along
18// with this library; see the file COPYING3. If not see
19// <http://www.gnu.org/licenses/>.
20
21#include <iterator>
22
23namespace std
24{
25 template<class C> constexpr auto begin(C& c) -> decltype(c.begin());
26 template<class C> constexpr auto begin(const C& c) -> decltype(c.begin());
27
28 template<class C> constexpr auto end(C& c) -> decltype(c.end());
29 template<class C> constexpr auto end(const C& c) -> decltype(c.end());
30
31 template<class T, size_t N> constexpr T* begin(T (&array)[N]);
32 template<class T, size_t N> constexpr T* end(T (&array)[N]);
33
34 template<class C> constexpr auto cbegin(const C& c) -> decltype(c.begin());
35 template<class C> constexpr auto cend(const C& c) -> decltype(c.end());
36
37 template<class C> constexpr auto rbegin(C& c) -> decltype(c.rbegin());
38 template<class C> constexpr auto rbegin(const C& c) -> decltype(c.rbegin());
39
40 template<class C> constexpr auto rend(C& c) -> decltype(c.rend());
41 template<class C> constexpr auto rend(const C& c) -> decltype(c.rend());
42
43 template<class T, size_t N>
44 constexpr reverse_iterator<T*> rbegin(T (&array)[N]);
45 template<class T, size_t N>
46 constexpr reverse_iterator<T*> rend(T (&array)[N]);
47
48 template<class E>
49 constexpr reverse_iterator<const E*> rbegin(initializer_list<E>);
50 template<class E>
51 constexpr reverse_iterator<const E*> rend(initializer_list<E>);
52
53 template<class C>
54 constexpr auto crbegin(const C& c) -> decltype(std::rbegin(c));
55 template<class C>
56 constexpr auto cend(const C& c) -> decltype(std::rend(c));
57}