0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

27.7 Mutating sequence operations [alg.modifying.operations] C++N4910:2022 (661) p1206.cpp

Last updated at Posted at 2022-08-15

はじめに(Introduction)

N4910 Working Draft, Standard for Programming Language C++
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/n4910.pdf

n4910は、ISO/IEC JTC1 SC22 WG21の作業原案(Working Draft)です。
公式のISO/IEC 14882原本ではありません。
ISO/IEC JTC1 SC22 WG21では、可能な限り作業文書を公開し、幅広い意見を求めています。
一連の記事はコード断片をコンパイルできる形にする方法を検討してコンパイル、リンク、実行して、規格案の原文と処理系(g++, Clang++)との違いを確認し、技術内容を検討し、ISO/IEC JTC1 SC22 WG21にフィードバックするために用います。
また、CERT C++, MISRA C++等のコーディング標準のコード断片をコンパイルする際の参考にさせていただこうと考えています。CERT C++, MISRA C++が標準化の動きとの時間的なずれがあれば確認できれば幸いです。また、boostライブラリとの関連、Linux OS, TOPPERSカーネル、g++(GCC), clang++(LLVM)との関係も調査中です。
何か、抜け漏れ、耳より情報がありましたらおしらせくださると幸いです。

<この項は書きかけです。順次追記します。>

背景(back ground)

C/C++でコンパイルエラーが出ると、途方にくれることがしばしばあります。
何回かに1回は、該当するエラーが検索できます。
ただ、条件が違っていて、そこでの修正方法では目的を達成しないこともしばしばです。いろいろな条件のコンパイルエラーとその対応方法について、広く記録することによって、いつか同じエラーに遭遇した時にやくに立つことを目指しています。

この半年の間で、三度、自分のネットでの記録に助けられたことがあります。
また過去に解決できなかった記録を10種類以上、最近になって解決できたことがあります。それは、主に次の3つの情報に基づいています。

cpprefjp - C++日本語リファレンス

コンパイラの実装状況

また
https://researchmap.jp/joub9b3my-1797580/#_1797580
に記載したサイトのお世話になっています。

作業方針(sequence)

Clang++では-std=c++03, C++2bの2種類
g++では-std=c++03, c++2bの2種類
でコンパイルし、

1)コンパイルエラーを収集する。
2)コンパイルエラーをなくす方法を検討する。
コンパイルエラーになる例を示すだけが目的のコードは、コンパイルエラーをなくすのではなく、コンパイルエラーの種類を収集するだけにする。
文法を示すのが目的のコード場合に、コンパイルエラーをなくすのに手間がかかる場合は、順次作業します。
3)リンクエラーをなくす方法を検討する。
文法を示すのが目的のコード場合に、リンクエラーをなくすのに手間がかかる場合は、順次作業します。
4)意味のある出力を作る。
コンパイル、リンクが通っても、意味のある出力を示そうとすると、コンパイル・リンクエラーが出て収拾できそうにない場合がある。順次作業します。

1)だけのものから4)まで進んだものと色々ある状態です。一歩でも前に進むご助言をお待ちしています。「検討事項」の欄に現状を記録するようにしています。

C++N4910:2022 Standard Working Draft on ISO/IEC 14882(0) sample code compile list

C++N4741, 2018 Standard Working Draft on ISO/IEC 14882 sample code compile list

C++N4606, 2016符号断片編纂一覧(example code compile list)

C++N4606, 2016 Working Draft 2016, ISO/IEC 14882, C++ standard(1) Example code compile list
https://qiita.com/kaizen_nagoya/items/df5d62c35bd6ed1c3d43/

C++N3242, 2011 sample code compile list on clang++ and g++

編纂器(Compiler)

clang++ --version

Debian clang version 14.0.5-++20220610033153+c12386ae247c-1~exp1~20220610153237.151
Target: x86_64-pc-linux-gnu, Thread model: posix, InstalledDir: /usr/bin

g++- --version

g++ (GCC) 12.1.0 Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

27.7 Mutating sequence operations [alg.modifying.operations] 27.7.1 Copy [alg.copy] C++N4910:2022 (661) p1206.cpp

算譜(source code)

p1206.cpp
// C++N4910 Committee Draft, Standard for Programming Language C++
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/n4910.pdf
const char * n4910 = "27.7 Mutating sequence operations [alg.modifying.operations] 27.7.1 Copy [alg.copy] C++N4910:2022 (661) p1206.cpp";
// Debian clang version 14.0.5-++20220610033153+c12386ae247c-
// g++ (GCC) 12.1.0 Copyright (C) 2022 Free Software Foundation, Inc.
// Edited by Dr. OGAWA Kiyoshi. Compile procedure and results record.
// C++N4910:2022 Standard Working Draft on ISO/IEC 14882(0) sample code compile list
// https://qiita.com/kaizen_nagoya/items/fc957ddddd402004bb91

#include "N4910.h"

using namespace std;

//  27.7.1 Copy [alg.copy] 
template<class InputIterator, class OutputIterator>
  constexpr OutputIterator copy(InputIterator first, InputIterator last,
                                OutputIterator result);
template<input_iterator I, sentinel_for<I> S, weakly_incrementable O>
  requires indirectly_copyable<I, O>
  constexpr ranges::copy_result<I, O> ranges::copy(I first, S last, O result);
template<input_range R, weakly_incrementable O>
  requires indirectly_copyable<iterator_t<R>, O>
  constexpr ranges::copy_result<borrowed_iterator_t<R>, O> ranges::copy(R&& r, O result);
Let N be last - first.
// Preconditions: result is not in the range [first, last).
// Effects: Copies elements in the range [first, last) into the range [result, result + N ) starting from first and proceeding to last. For each non-negative integer n < N, performs *(result + n) =
*(first + n). Returns:
// — result + N for the overload in namespace std.
// — {last, result + N} for the overloads in namespace ranges. 
// Complexity: Exactly N assignments.
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2>
  ForwardIterator2 copy(ExecutionPolicy&& policy,
                   ForwardIterator1 first, ForwardIterator1 last,
                   ForwardIterator2 result);
// Preconditions: The ranges [first, last) and [result, result + (last - first)) do not overlap. Effects: Copies elements in the range [first, last) into the range [result, result + (last - first)).
For each non-negative integer n < (last - first), performs *(result + n) = *(first + n). Returns: result + (last - first).
Complexity: Exactly last - first assignments.
template<class InputIterator, class Size, class OutputIterator>
  constexpr OutputIterator copy_n(InputIterator first, Size n,
                                  OutputIterator result);
template<class ExecutionPolicy, class ForwardIterator1, class Size, class ForwardIterator2>
  ForwardIterator2 copy_n(ExecutionPolicy&& exec,
                          ForwardIterator1 first, Size n,
                          ForwardIterator2 result);
template<input_iterator I, weakly_incrementable O>
  requires indirectly_copyable<I, O>
  constexpr ranges::copy_n_result<I, O>
// — result + N for the overloads in namespace std.
// — {first + N, result + N} for the overload in namespace ranges. // Complexity: Exactly N assignments.
       indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
requires indirectly_copyable<iterator_t<R>, O>
constexpr ranges::copy_if_result<borrowed_iterator_t<R>, O>
  ranges::copy_if(R&& r, O result, Pred pred, Proj proj = {});
Let E be:
// — bool(pred(*i)) for the overloads in namespace std;
// — bool(invoke(pred, invoke(proj, *i))) for the overloads in namespace ranges, and N be the number of iterators i in the range [first, last) for which the condition E holds. Preconditions: The ranges [first, last) and [result, result + (last - first)) do not overlap.
// [Note 1 : For the overload with an ExecutionPolicy, there might be a performance cost if iterator_traits<For- wardIterator1>::value_type is not Cpp17MoveConstructible (Table 30). 
// Effects: Copies all of the elements referred to by the iterator i in the range [first, last) for which E is true.
// Returns: — result + N for the overloads in namespace std.
// — {last, result + N} for the overloads in namespace ranges.
Complexity: Exactly last - first applications of the corresponding predicate and any projection. Remarks: Stable (16.4.6.8).
requires indirectly_copyable<iterator_t<R>, I>
constexpr ranges::copy_backward_result<borrowed_iterator_t<R>, I>
  ranges::copy_backward(R&& r, I result);
Let N be last - first.
// Preconditions: result is not in the range (first, last].
// Effects: Copies elements in the range [first, last) into the range [result - N , result) starting from last - 1 and proceeding to first.221 For each positive integer n ≤ N, performs *(result - n) =
template<class InputIterator, class OutputIterator, class Predicate>
  constexpr OutputIterator copy_if(InputIterator first, InputIterator last,
                                   OutputIterator result, Predicate pred);
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2,
         class Predicate>
  ForwardIterator2 copy_if(ExecutionPolicy&& exec,
                           ForwardIterator1 first, ForwardIterator1 last,
                           ForwardIterator2 result, Predicate pred);
template<input_iterator I, sentinel_for<I> S, weakly_incrementable O, class Proj = identity,
         indirect_unary_predicate<projected<I, Proj>> Pred>
  requires indirectly_copyable<I, O>
  constexpr ranges::copy_if_result<I, O>
    ranges::copy_if(I first, S last, O result, Pred pred, Proj proj = {});
template<input_range R, weakly_incrementable O, class Proj = identity,
template<class BidirectionalIterator1, class BidirectionalIterator2>
  constexpr BidirectionalIterator2
    copy_backward(BidirectionalIterator1 first,
                  BidirectionalIterator1 last,
                  BidirectionalIterator2 result);
template<bidirectional_iterator I1, sentinel_for<I1> S1, bidirectional_iterator I2>
  requires indirectly_copyable<I1, I2>
  constexpr ranges::copy_backward_result<I1, I2>
    ranges::copy_backward(I1 first, S1 last, I2 result);
template<bidirectional_range R, bidirectional_iterator I>
// *(last - n). 
// Returns: — result - N for the overload in namespace std.
// — {last, result - N} for the overloads in namespace ranges. 
// Complexity: Exactly N assignments.
// 27.7.2 Move [alg.move]
template<class InputIterator, class OutputIterator>
  constexpr OutputIterator move(InputIterator first, InputIterator last,
                                OutputIterator result);
template<input_iterator I, sentinel_for<I> S, weakly_incrementable O>
  requires indirectly_movable<I, O>
  constexpr ranges::move_result<I, O>
    ranges::move(I first, S last, O result);
template<input_range R, weakly_incrementable O>
  requires indirectly_movable<iterator_t<R>, O>
constexpr ranges::move_result<borrowed_iterator_t<R>, O>
  ranges::move(R&& r, O result);
// Let E be — std::move(*(first + n)) for the overload in namespace std;
// — ranges::iter_move(first + n) for the overloads in namespace ranges.
// Let N be last - first.
// Preconditions: result is not in the range [first, last).
// Effects: Moves elements in the range [first, last) into the range [result, result + N ) starting from first and proceeding to last. For each non-negative integer n < N, performs *(result + n) = E.
// Returns: — result + N for the overload in namespace std.
// — {last, result + N} for the overloads in namespace ranges.
// Complexity: Exactly N assignments.
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2>
  ForwardIterator2 move(ExecutionPolicy&& policy,
                   ForwardIterator1 first, ForwardIterator1 last,
                   ForwardIterator2 result);
// Let N be last - first.
// Preconditions: The ranges [first,last) and [result,result + N) do not overlap.
Effects: Moves elements in the range [first,last) into the range [result,result + N). For each non-negative integer n < N, performs *(result + n) = std::move(*(first + n)).
// Returns: result + N.
// Complexity: Exactly N assignments.
template<class BidirectionalIterator1, class BidirectionalIterator2>
  constexpr BidirectionalIterator2
    move_backward(BidirectionalIterator1 first, BidirectionalIterator1 last,
                  BidirectionalIterator2 result);
template<bidirectional_iterator I1, sentinel_for<I1> S1, bidirectional_iterator I2>
  requires indirectly_movable<I1, I2>
  constexpr ranges::move_backward_result<I1, I2>
    ranges::move_backward(I1 first, S1 last, I2 result);
template<bidirectional_range R, bidirectional_iterator I>
  requires indirectly_movable<iterator_t<R>, I>
  constexpr ranges::move_backward_result<borrowed_iterator_t<R>, I>
    ranges::move_backward(R&& r, I result);
//Let E be — std::move(*(last - n)) for the overload in namespace std;
//— ranges::iter_move(last - n) for the overloads in namespace ranges.
Let N be last - first.
//Preconditions: result is not in the range (first, last].
//Effects: Moves elements in the range [first, last) into the range [result - N , result) starting from last - 1 and proceeding to first.222 For each positive integer n ≤ N, performs *(result - n) = E.
requires indirectly_swappable<iterator_t<R1>, iterator_t<R2>>
constexpr ranges::swap_ranges_result<borrowed_iterator_t<R1>, borrowed_iterator_t<R2>>
  ranges::swap_ranges(R1&& r1, R2&& r2);
//Let: — last2 be first2 + (last1 - first1) for the overloads with no parameter named last2;
//— M be min(last1 - first1, last2 - first2).
//Preconditions: The two ranges [first1, last1) and [first2, last2) do not overlap. For the overloads in namespace std, *(first1 + n) is swappable with (16.4.4.3) *(first2 + n).
//Effects: For each non-negative integer n < M performs:
//— swap(*(first1 + n), *(first2 + n)) for the overloads in namespace std;
//— ranges::iter_swap(first1 + n, first2 + n) for the overloads in namespace ranges.
Returns:
 last2 for the overloads in namespace std.
 {first1 + M, first2 + M} for the overloads in namespace ranges.
//Complexity: Exactly M swaps.
//Returns: — result - N for the overload in namespace std.
//— {last, result - N} for the overloads in namespace ranges.
//Complexity: Exactly N assignments. 27.7.3 Swap
template<class ForwardIterator1, class ForwardIterator2>
  constexpr ForwardIterator2
    swap_ranges(ForwardIterator1 first1, ForwardIterator1 last1,
                ForwardIterator2 first2);
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2>
  ForwardIterator2
    swap_ranges(ExecutionPolicy&& exec,
                ForwardIterator1 first1, ForwardIterator1 last1,
                ForwardIterator2 first2);
[alg.swap]
template<input_iterator I1, sentinel_for<I1> S1, input_iterator I2, sentinel_for<I2> S2>
  requires indirectly_swappable<I1, I2>
  constexpr ranges::swap_ranges_result<I1, I2>
    ranges::swap_ranges(I1 first1, S1 last1, I2 first2, S2 last2);
template<input_range R1, input_range R2>
requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R1>, Proj1>,
                                       projected<iterator_t<R2>, Proj2>>>
constexpr ranges::binary_transform_result<borrowed_iterator_t<R1>, borrowed_iterator_t<R2>, O>
  ranges::transform(R1&& r1, R2&& r2, O result,
                    F binary_op, Proj1 proj1 = {}, Proj2 proj2 = {});
//Let: — last2 be first2 + (last1 - first1) for the overloads with parameter first2 but no parameter last2;
   template<class ForwardIterator1, class ForwardIterator2>
     constexpr void iter_swap(ForwardIterator1 a, ForwardIterator2 b);
//Preconditions: a and b are dereferenceable. *a is swappable with (16.4.4.3) *b. Effects: As if by swap(*a, *b).
// 27.7.4 Transform [alg.transform]
template<class InputIterator, class OutputIterator,
         class UnaryOperation>
  constexpr OutputIterator
    transform(InputIterator first1, InputIterator last1,
              OutputIterator result, UnaryOperation op);
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2,
         class UnaryOperation>
  ForwardIterator2
    transform(ExecutionPolicy&& exec,
              ForwardIterator1 first1, ForwardIterator1 last1,
              ForwardIterator2 result, UnaryOperation op);
template<class InputIterator1, class InputIterator2,
         class OutputIterator, class BinaryOperation>
  constexpr OutputIterator
    transform(InputIterator1 first1, InputIterator1 last1,
              InputIterator2 first2, OutputIterator result,
              BinaryOperation binary_op);
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2,
         class ForwardIterator, class BinaryOperation>
  ForwardIterator
    transform(ExecutionPolicy&& exec,
              ForwardIterator1 first1, ForwardIterator1 last1,
              ForwardIterator2 first2, ForwardIterator result,
              BinaryOperation binary_op);
template<input_iterator I, sentinel_for<I> S, weakly_incrementable O,
         copy_constructible F, class Proj = identity>
  requires indirectly_writable<O, indirect_result_t<F&, projected<I, Proj>>>
  constexpr ranges::unary_transform_result<I, O>
    ranges::transform(I first1, S last1, O result, F op, Proj proj = {});
template<input_range R, weakly_incrementable O, copy_constructible F,
         class Proj = identity>
  requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R>, Proj>>>
  constexpr ranges::unary_transform_result<borrowed_iterator_t<R>, O>
    ranges::transform(R&& r, O result, F op, Proj proj = {});
template<input_iterator I1, sentinel_for<I1> S1, input_iterator I2, sentinel_for<I2> S2,
         weakly_incrementable O, copy_constructible F, class Proj1 = identity,
         class Proj2 = identity>
  requires indirectly_writable<O, indirect_result_t<F&, projected<I1, Proj1>,
                                         projected<I2, Proj2>>>
  constexpr ranges::binary_transform_result<I1, I2, O>
    ranges::transform(I1 first1, S1 last1, I2 first2, S2 last2, O result,
                      F binary_op, Proj1 proj1 = {}, Proj2 proj2 = {});
template<input_range R1, input_range R2, weakly_incrementable O,
         copy_constructible F, class Proj1 = identity, class Proj2 = identity>
// — N be last1 - first1 for unary transforms, or min(last1 - first1, last2 - first2) for binary transforms;
// — E be
// — op(*(first1 + (i - result))) for unary transforms defined in namespace std;
// — binary_op(*(first1 + (i - result)), *(first2 + (i - result))) for binary trans- forms defined in namespace std;
// — invoke(op, invoke(proj, *(first1 + (i - result)))) for unary transforms defined in namespace ranges;
// — invoke(binary_op, invoke(proj1, *(first1 + (i - result))), invoke(proj2, *(first2 + (i - result)))) for binary transforms defined in namespace ranges.
// Preconditions: op and binary_op do not invalidate iterators or subranges, nor modify elements in the ranges
// — [first1,first1 + N],
// — [first2,first2 + N], and — [result,result + N].223
// Effects: Assigns through every iterator i in the range [result,result + N) a new corresponding value equal to E.
// Returns: — result + N for the overloads defined in namespace std.
// — {first1 + N, result + N} for unary transforms defined in namespace ranges.
// — {first1 + N, first2 + N, result + N} for binary transforms defined in namespace ranges.
// Complexity: Exactly N applications of op or binary_op, and any projections. This requirement also applies to the overload with an ExecutionPolicy.
// Remarks: result may be equal to first1 or first2. 27.7.5 Replace
template<class ForwardIterator, class T>
  constexpr void replace(ForwardIterator first, ForwardIterator last,
                         const T& old_value, const T& new_value);
template<class ExecutionPolicy, class ForwardIterator, class T>
  void replace(ExecutionPolicy&& exec,
               ForwardIterator first, ForwardIterator last,
               const T& old_value, const T& new_value);
template<class ForwardIterator, class Predicate, class T>
  constexpr void replace_if(ForwardIterator first, ForwardIterator last,
                            Predicate pred, const T& new_value);
template<class ExecutionPolicy, class ForwardIterator, class Predicate, class T>
  void replace_if(ExecutionPolicy&& exec,
                  ForwardIterator first, ForwardIterator last,
                  Predicate pred, const T& new_value);
[alg.replace]
template<input_iterator I, sentinel_for<I> S, class T1, class T2, class Proj = identity>
  requires indirectly_writable<I, const T2&> &&
           indirect_binary_predicate<ranges::equal_to, projected<I, Proj>, const T1*>
  constexpr I
    ranges::replace(I first, S last, const T1& old_value, const T2& new_value, Proj proj = {});
template<input_range R, class T1, class T2, class Proj = identity>
  requires indirectly_writable<iterator_t<R>, const T2&> &&
           indirect_binary_predicate<ranges::equal_to, projected<iterator_t<R>, Proj>, const T1*>
  constexpr borrowed_iterator_t<R>
    ranges::replace(R&& r, const T1& old_value, const T2& new_value, Proj proj = {});
template<input_iterator I, sentinel_for<I> S, class T, class Proj = identity,
         indirect_unary_predicate<projected<I, Proj>> Pred>
  requires indirectly_writable<I, const T&>
  constexpr I ranges::replace_if(I first, S last, Pred pred, const T& new_value, Proj proj = {});
template<input_range R, class T, class Proj = identity,
         indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
  requires indirectly_writable<iterator_t<R>, const T&>
  constexpr borrowed_iterator_t<R>
    ranges::replace_if(R&& r, Pred pred, const T& new_value, Proj proj = {});
// Let E be — bool(*i == old_value) for replace;
// — bool(pred(*i)) for replace_if;
// — bool(invoke(proj, *i) == old_value) for ranges::replace;
// — bool(invoke(pred, invoke(proj, *i))) for ranges::replace_if.
// Mandates: new_value is writable (25.3.1) to first.
// Effects: Substitutes elements referred by the iterator i in the range [first,last) with new_value, when E is true.
// Returns: last for the overloads in namespace ranges.
// Complexity: Exactly last - first applications of the corresponding predicate and any projection.
template<class InputIterator, class OutputIterator, class T>
  constexpr OutputIterator
    replace_copy(InputIterator first, InputIterator last,
                 OutputIterator result,
                 const T& old_value, const T& new_value);
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2, class T>
  ForwardIterator2
    replace_copy(ExecutionPolicy&& exec,
                 ForwardIterator1 first, ForwardIterator1 last,
                 ForwardIterator2 result,
                 const T& old_value, const T& new_value);
template<class InputIterator, class OutputIterator, class Predicate, class T>
  constexpr OutputIterator
    replace_copy_if(InputIterator first, InputIterator last,
                    OutputIterator result,
                    Predicate pred, const T& new_value);
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2,
         class Predicate, class T>
  ForwardIterator2
    replace_copy_if(ExecutionPolicy&& exec,
                    ForwardIterator1 first, ForwardIterator1 last,
                    ForwardIterator2 result,
                    Predicate pred, const T& new_value);
template<input_iterator I, sentinel_for<I> S, class T1, class T2, output_iterator<const T2&> O,
         class Proj = identity>
  requires indirectly_copyable<I, O> &&
           indirect_binary_predicate<ranges::equal_to, projected<I, Proj>, const T1*>
  constexpr ranges::replace_copy_result<I, O>
    ranges::replace_copy(I first, S last, O result, const T1& old_value, const T2& new_value,
                         Proj proj = {});
template<input_range R, class T1, class T2, output_iterator<const T2&> O,
         class Proj = identity>
  requires indirectly_copyable<iterator_t<R>, O> &&
           indirect_binary_predicate<ranges::equal_to, projected<iterator_t<R>, Proj>, const T1*>
  constexpr ranges::replace_copy_result<borrowed_iterator_t<R>, O>
    ranges::replace_copy(R&& r, O result, const T1& old_value, const T2& new_value,
                         Proj proj = {});
template<input_iterator I, sentinel_for<I> S, class T, output_iterator<const T&> O,
         class Proj = identity, indirect_unary_predicate<projected<I, Proj>> Pred>
  requires indirectly_copyable<I, O>
  constexpr ranges::replace_copy_if_result<I, O>
    ranges::replace_copy_if(I first, S last, O result, Pred pred, const T& new_value,
                            Proj proj = {});
template<input_range R, class T, output_iterator<const T&> O, class Proj = identity,
         indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
  requires indirectly_copyable<iterator_t<R>, O>
  constexpr ranges::replace_copy_if_result<borrowed_iterator_t<R>, O>
    ranges::replace_copy_if(R&& r, O result, Pred pred, const T& new_value,
                            Proj proj = {});
// Let E be — bool(*(first + (i - result)) == old_value) for replace_copy;
// — bool(pred(*(first + (i - result)))) for replace_copy_if;
// — bool(invoke(proj, *(first + (i - result))) == old_value) for ranges::replace_copy;
// — bool(invoke(pred, invoke(proj, *(first + (i - result))))) for ranges::replace_- copy_if.
// Mandates: The results of the expressions *first and new_value are writable (25.3.1) to result. Preconditions: The ranges [first, last) and [result, result + (last - first)) do not overlap.
// Effects: Assigns through every iterator i in the range [result,result + (last - first)) a new corresponding value
// — new_value if E is true or
// — *(first + (i - result)) otherwise. Returns:
// — result + (last - first) for the overloads in namespace std.
// — {last, result + (last - first)} for the overloads in namespace ranges.
// Complexity: Exactly last - first applications of the corresponding predicate and any projection.
// Let N be max(0, n) for the fill_n algorithms, and last - first for the fill algorithms. Mandates: The expression value is writable (25.3.1) to the output iterator. The type Size is convertible
to an integral type (7.3.9, 11.4.8).
// Effects: Assigns value through all the iterators in the range [first,first + N). Returns: first + N.
// 27.7.6 Fill [alg.fill]
template<class ForwardIterator, class T>
  constexpr void fill(ForwardIterator first, ForwardIterator last, const T& value);
template<class ExecutionPolicy, class ForwardIterator, class T>
  void fill(ExecutionPolicy&& exec,
            ForwardIterator first, ForwardIterator last, const T& value);
template<class OutputIterator, class Size, class T>
  constexpr OutputIterator fill_n(OutputIterator first, Size n, const T& value);
template<class ExecutionPolicy, class ForwardIterator, class Size, class T>
  ForwardIterator fill_n(ExecutionPolicy&& exec,
                         ForwardIterator first, Size n, const T& value);
template<class T, output_iterator<const T&> O, sentinel_for<O> S>
  constexpr O ranges::fill(O first, S last, const T& value);
template<class T, output_range<const T&> R>
  constexpr borrowed_iterator_t<R> ranges::fill(R&& r, const T& value);
template<class T, output_iterator<const T&> O>
  constexpr O ranges::fill_n(O first, iter_difference_t<O> n, const T& value);
// Complexity: Exactly N assignments. 27.7.7 Generate
template<class ForwardIterator, class Generator>
  constexpr void generate(ForwardIterator first, ForwardIterator last,
                          Generator gen);
template<class ExecutionPolicy, class ForwardIterator, class Generator>
  void generate(ExecutionPolicy&& exec,
                ForwardIterator first, ForwardIterator last,
                Generator gen);
template<class OutputIterator, class Size, class Generator>
  constexpr OutputIterator generate_n(OutputIterator first, Size n, Generator gen);
template<class ExecutionPolicy, class ForwardIterator, class Size, class Generator>
  ForwardIterator generate_n(ExecutionPolicy&& exec,
                             ForwardIterator first, Size n, Generator gen);
template<input_or_output_iterator O, sentinel_for<O> S, copy_constructible F>
  requires invocable<F&> && indirectly_writable<O, invoke_result_t<F&>>
  constexpr O ranges::generate(O first, S last, F gen);
template<class R, copy_constructible F>
  requires invocable<F&> && output_range<R, invoke_result_t<F&>>
  constexpr borrowed_iterator_t<R> ranges::generate(R&& r, F gen);
template<input_or_output_iterator O, copy_constructible F>
  requires invocable<F&> && indirectly_writable<O, invoke_result_t<F&>>
  constexpr O ranges::generate_n(O first, iter_difference_t<O> n, F gen);
// Let N be max(0, n) for the generate_n algorithms, and last - first for the generate algorithms. Mandates: Size is convertible to an integral type (7.3.9, 11.4.8).
// Effects: Assigns the result of successive evaluations of gen() through each iterator in the range [first,first + N).
// Returns: first + N.
// Complexity: Exactly N evaluations of gen() and assignments.
// 27.7.8 Remove [alg.remove]
template<class ForwardIterator, class T>
  constexpr ForwardIterator remove(ForwardIterator first, ForwardIterator last,
                                   const T& value);
template<class ExecutionPolicy, class ForwardIterator, class T>
  ForwardIterator remove(ExecutionPolicy&& exec,
                         ForwardIterator first, ForwardIterator last,
                         const T& value);
template<class ForwardIterator, class Predicate>
  constexpr ForwardIterator remove_if(ForwardIterator first, ForwardIterator last,
                                      Predicate pred);
template<class ExecutionPolicy, class ForwardIterator, class Predicate>
  ForwardIterator remove_if(ExecutionPolicy&& exec,
                            ForwardIterator first, ForwardIterator last,
                            Predicate pred);
template<permutable I, sentinel_for<I> S, class T, class Proj = identity>
  requires indirect_binary_predicate<ranges::equal_to, projected<I, Proj>, const T*>
  constexpr subrange<I> ranges::remove(I first, S last, const T& value, Proj proj = {});
template<forward_range R, class T, class Proj = identity>
  requires permutable<iterator_t<R>> &&
           indirect_binary_predicate<ranges::equal_to, projected<iterator_t<R>, Proj>, const T*>
  constexpr borrowed_subrange_t<R>
    ranges::remove(R&& r, const T& value, Proj proj = {});
[alg.generate]
template<permutable I, sentinel_for<I> S, class Proj = identity,
         indirect_unary_predicate<projected<I, Proj>> Pred>
  constexpr subrange<I> ranges::remove_if(I first, S last, Pred pred, Proj proj = {});
template<forward_range R, class Proj = identity,
         indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
  requires permutable<iterator_t<R>>
  constexpr borrowed_subrange_t<R>
    ranges::remove_if(R&& r, Pred pred, Proj proj = {});
// Let E be
// — bool(*i == value) for remove;
// — bool(pred(*i)) for remove_if;
// — bool(invoke(proj, *i) == value) for ranges::remove;
// — bool(invoke(pred, invoke(proj, *i))) for ranges::remove_if.
// Preconditions: For the algorithms in namespace std, the type of *first meets the Cpp17MoveAssignable requirements (Table 32).
// Effects: Eliminates all the elements referred to by iterator i in the range [first, last) for which E holds.
Returns: Let j be the end of the resulting range. Returns:  j for the overloads in namespace std.
// — {j, last} for the overloads in namespace ranges.
// Complexity: Exactly last - first applications of the corresponding predicate and any projection.
// Remarks: Stable (16.4.6.8).
// [Note 1: Each element in the range [ret,last), where ret is the returned value, has a valid but unspecified state, because the algorithms can eliminate elements by moving from elements that were originally in that range. 
template<class InputIterator, class OutputIterator, class T>
  constexpr OutputIterator
    remove_copy(InputIterator first, InputIterator last,
                OutputIterator result, const T& value);
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2,
         class T>
  ForwardIterator2
    remove_copy(ExecutionPolicy&& exec,
                ForwardIterator1 first, ForwardIterator1 last,
                ForwardIterator2 result, const T& value);
template<class InputIterator, class OutputIterator, class Predicate>
  constexpr OutputIterator
    remove_copy_if(InputIterator first, InputIterator last,
                   OutputIterator result, Predicate pred);
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2,
         class Predicate>
  ForwardIterator2
    remove_copy_if(ExecutionPolicy&& exec,
                   ForwardIterator1 first, ForwardIterator1 last,
                   ForwardIterator2 result, Predicate pred);
template<input_iterator I, sentinel_for<I> S, weakly_incrementable O, class T,
         class Proj = identity>
  requires indirectly_copyable<I, O> &&
           indirect_binary_predicate<ranges::equal_to, projected<I, Proj>, const T*>
  constexpr ranges::remove_copy_result<I, O>
    ranges::remove_copy(I first, S last, O result, const T& value, Proj proj = {});
template<input_range R, weakly_incrementable O, class T, class Proj = identity>
  requires indirectly_copyable<iterator_t<R>, O> &&
           indirect_binary_predicate<ranges::equal_to, projected<iterator_t<R>, Proj>, const T*>
  constexpr ranges::remove_copy_result<borrowed_iterator_t<R>, O>
    ranges::remove_copy(R&& r, O result, const T& value, Proj proj = {});
template<input_iterator I, sentinel_for<I> S, weakly_incrementable O,
         class Proj = identity, indirect_unary_predicate<projected<I, Proj>> Pred>
  requires indirectly_copyable<I, O>
  constexpr ranges::remove_copy_if_result<I, O>
    ranges::remove_copy_if(I first, S last, O result, Pred pred, Proj proj = {});
template<input_range R, weakly_incrementable O, class Proj = identity,
         indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
  requires indirectly_copyable<iterator_t<R>, O>
  constexpr ranges::remove_copy_if_result<borrowed_iterator_t<R>, O>
    ranges::remove_copy_if(R&& r, O result, Pred pred, Proj proj = {});
// Let E be — bool(*i == value) for remove_copy;
// — bool(pred(*i)) for remove_copy_if;
// — bool(invoke(proj, *i) == value) for ranges::remove_copy;
// — bool(invoke(pred, invoke(proj, *i))) for ranges::remove_copy_if.
// Let N be the number of elements in [first, last) for which E is false.
// Mandates: *first is writable (25.3.1) to result.
// Preconditions: The ranges [first, last) and [result, result + (last - first)) do not overlap.
// [Note 2: For the overloads with an ExecutionPolicy, there might be a performance cost if iterator_-
traits<ForwardIterator1>::value_type does not meet the Cpp17MoveConstructible (Table 30) requirements.
// Effects: Copies all the elements referred to by the iterator i in the range [first, last) for which E is false.
// Returns: — result + N, for the algorithms in namespace std.
// — {last, result + N}, for the algorithms in namespace ranges.
// Complexity: Exactly last - first applications of the corresponding predicate and any projection. Remarks: Stable (16.4.6.8).
1 (1.1)
       indirect_equivalence_relation<projected<iterator_t<R>, Proj>> C = ranges::equal_to>
requires permutable<iterator_t<R>>
constexpr borrowed_subrange_t<R>
  ranges::unique(R&& r, C comp = {}, Proj proj = {});
// Let pred be equal_to{} for the overloads with no parameter pred, and let E be — bool(pred(*(i - 1), *i)) for the overloads in namespace std;
// 27.7.9 Unique [alg.unique]
template<class ForwardIterator>
  constexpr ForwardIterator unique(ForwardIterator first, ForwardIterator last);
template<class ExecutionPolicy, class ForwardIterator>
  ForwardIterator unique(ExecutionPolicy&& exec,
                         ForwardIterator first, ForwardIterator last);
template<class ForwardIterator, class BinaryPredicate>
  constexpr ForwardIterator unique(ForwardIterator first, ForwardIterator last,
                                   BinaryPredicate pred);
template<class ExecutionPolicy, class ForwardIterator, class BinaryPredicate>
  ForwardIterator unique(ExecutionPolicy&& exec,
                         ForwardIterator first, ForwardIterator last,
                         BinaryPredicate pred);
template<permutable I, sentinel_for<I> S, class Proj = identity,
         indirect_equivalence_relation<projected<I, Proj>> C = ranges::equal_to>
  constexpr subrange<I> ranges::unique(I first, S last, C comp = {}, Proj proj = {});
template<forward_range R, class Proj = identity,
// — bool(invoke(comp, invoke(proj, *(i - 1)), invoke(proj, *i))) for the overloads in namespace ranges.
// Preconditions: For the overloads in namepace std, pred is an equivalence relation and the type of *first meets the Cpp17MoveAssignable requirements (Table 32).
// Effects: For a nonempty range, eliminates all but the first element from every consecutive group of equivalent elements referred to by the iterator i in the range [first + 1, last) for which E is true.
// Returns: Let j be the end of the resulting range. Returns: — j for the overloads in namespace std.
 {j, last} for the overloads in namespace ranges.
// Complexity: For nonempty ranges, exactly (last - first) - 1 applications of the corresponding predicate and no more than twice as many applications of any projection.
       indirect_equivalence_relation<projected<iterator_t<R>, Proj>> C = ranges::equal_to>
requires indirectly_copyable<iterator_t<R>, O> &&
         (forward_iterator<iterator_t<R>> ||
          (input_iterator<O> && same_as<range_value_t<R>, iter_value_t<O>>) ||
          indirectly_copyable_storable<iterator_t<R>, O>)
constexpr ranges::unique_copy_result<borrowed_iterator_t<R>, O>
  ranges::unique_copy(R&& r, O result, C comp = {}, Proj proj = {});
// Let pred be equal_to{} for the overloads in namespace std with no parameter pred, and let E be
// — bool(pred(*i, *(i - 1))) for the overloads in namespace std;
// — bool(invoke(comp, invoke(proj, *i), invoke(proj, *(i - 1)))) for the overloads in namespace ranges.
// Mandates: *first is writable (25.3.1) to result. Preconditions:
template<class InputIterator, class OutputIterator>
  constexpr OutputIterator
    unique_copy(InputIterator first, InputIterator last,
                OutputIterator result);
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2>
  ForwardIterator2
    unique_copy(ExecutionPolicy&& exec,
                ForwardIterator1 first, ForwardIterator1 last,
                ForwardIterator2 result);
template<class InputIterator, class OutputIterator,
         class BinaryPredicate>
  constexpr OutputIterator
    unique_copy(InputIterator first, InputIterator last,
                OutputIterator result, BinaryPredicate pred);
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2,
         class BinaryPredicate>
  ForwardIterator2
    unique_copy(ExecutionPolicy&& exec,
                ForwardIterator1 first, ForwardIterator1 last,
                ForwardIterator2 result, BinaryPredicate pred);
template<input_iterator I, sentinel_for<I> S, weakly_incrementable O, class Proj = identity,
         indirect_equivalence_relation<projected<I, Proj>> C = ranges::equal_to>
  requires indirectly_copyable<I, O> &&
           (forward_iterator<I> ||
            (input_iterator<O> && same_as<iter_value_t<I>, iter_value_t<O>>) ||
            indirectly_copyable_storable<I, O>)
  constexpr ranges::unique_copy_result<I, O>
    ranges::unique_copy(I first, S last, O result, C comp = {}, Proj proj = {});
template<input_range R, weakly_incrementable O, class Proj = identity,
// — The ranges [first, last) and [result, result+(last-first)) do not overlap.
// — For the overloads in namespace std:
// — The comparison function is an equivalence relation.
// — For the overloads with no ExecutionPolicy, let T be the value type of InputIterator. If InputIterator meets the Cpp17ForwardIterator requirements, then there are no addi- tional requirements for T.  Otherwise, if OutputIterator meets the Cpp17ForwardIterator requirements and its value type is the same as T, then T meets the Cpp17CopyAssignable
(Table 33) requirements. Otherwise, T meets both the Cpp17CopyConstructible (Table 31) and Cpp17CopyAssignable requirements.
// [Note 1: For the overloads with an ExecutionPolicy, there might be a performance cost if the value type of ForwardIterator1 does not meet both the Cpp17CopyConstructible and Cpp17CopyAssignable requirements. 
// Effects: Copies only the first element from every consecutive group of equal elements referred to by the iterator i in the range [first, last) for which E holds.
Returns:
 result + N for the overloads in namespace std.
 {last, result + N} for the overloads in namespace ranges.
Complexity: Exactly last - first - 1 applications of the corresponding predicate and no more than twice as many applications of any projection.
// Preconditions: For the overloads in namespace std, BidirectionalIterator meets the Cpp17Value- Swappable requirements (16.4.4.3).
// Effects: For each non-negative integer i < (last - first) / 2, applies std::iter_swap, or ranges:: iter_swap for the overloads in namespace ranges, to all pairs of iterators first + i, (last - i) - 1.
// Returns: last for the overloads in namespace ranges. Complexity: Exactly (last - first)/2 swaps.
// 27.7.10 Reverse [alg.reverse]
template<class BidirectionalIterator>
  constexpr void reverse(BidirectionalIterator first, BidirectionalIterator last);
template<class ExecutionPolicy, class BidirectionalIterator>
  void reverse(ExecutionPolicy&& exec,
               BidirectionalIterator first, BidirectionalIterator last);
template<bidirectional_iterator I, sentinel_for<I> S>
  requires permutable<I>
  constexpr I ranges::reverse(I first, S last);
template<bidirectional_range R>
  requires permutable<iterator_t<R>>
  constexpr borrowed_iterator_t<R> ranges::reverse(R&& r);
template<class BidirectionalIterator, class OutputIterator>
  constexpr OutputIterator
    reverse_copy(BidirectionalIterator first, BidirectionalIterator last,
                 OutputIterator result);
template<class ExecutionPolicy, class BidirectionalIterator, class ForwardIterator>
  ForwardIterator
    reverse_copy(ExecutionPolicy&& exec,
                 BidirectionalIterator first, BidirectionalIterator last,
                 ForwardIterator result);
template<bidirectional_iterator I, sentinel_for<I> S, weakly_incrementable O>
  requires indirectly_copyable<I, O>
  constexpr ranges::reverse_copy_result<I, O>
    ranges::reverse_copy(I first, S last, O result);
template<bidirectional_range R, weakly_incrementable O>
  requires indirectly_copyable<iterator_t<R>, O>
  constexpr ranges::reverse_copy_result<borrowed_iterator_t<R>, O>
    ranges::reverse_copy(R&& r, O result);
// Let N be last - first.
// Preconditions: The ranges [first,last) and [result,result + N) do not overlap.
// Effects: Copies the range [first,last) to the range [result,result + N) such that for every non- negative integer i < N the following assignment takes place: *(result + N - 1 - i) = *(first + i).
// Preconditions: [first, middle) and [middle, last) are valid ranges. For the overloads in namespace std, ForwardIterator meets the Cpp17ValueSwappable requirements (16.4.4.3), and the type of *first meets the Cpp17MoveConstructible (Table 30) and Cpp17MoveAssignable (Table 32) requirements.
// Effects: For each non-negative integer i < (last - first), places the element from the position first + i into position first + (i + (last - middle)) % (last - first).
// [Note 1: This is a left rotate. —end note] Returns:
// — first + (last - middle) for the overloads in namespace std.
// — {first + (last - middle), last} for the overload in namespace ranges. Complexity: At most last - first swaps.
// Returns:
// — result + N for the overloads in namespace std.
// — {last, result + N} for the overloads in namespace ranges.
Complexity: Exactly N assignments. 
// 27.7.11 Rotate [alg.rotate]
template<class ForwardIterator>
  constexpr ForwardIterator
    rotate(ForwardIterator first, ForwardIterator middle, ForwardIterator last);
template<class ExecutionPolicy, class ForwardIterator>
  ForwardIterator
    rotate(ExecutionPolicy&& exec,
           ForwardIterator first, ForwardIterator middle, ForwardIterator last);
template<permutable I, sentinel_for<I> S>
  constexpr subrange<I> ranges::rotate(I first, I middle, S last);
template<forward_range R>
  requires permutable<iterator_t<R>>
  constexpr borrowed_subrange_t<R> ranges::rotate(R&& r, iterator_t<R> middle);
Effects: Equivalent to: return ranges::rotate(ranges::begin(r), middle, ranges::end(r));
template<class ForwardIterator, class OutputIterator>
  constexpr OutputIterator
    rotate_copy(ForwardIterator first, ForwardIterator middle, ForwardIterator last,
                OutputIterator result);
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2>
  ForwardIterator2
    rotate_copy(ExecutionPolicy&& exec,
                ForwardIterator1 first, ForwardIterator1 middle, ForwardIterator1 last,
                ForwardIterator2 result);
  template<forward_iterator I, sentinel_for<I> S, weakly_incrementable O>
    requires indirectly_copyable<I, O>
    constexpr ranges::rotate_copy_result<I, O>
 ranges::rotate_copy(I first, I middle, S last, O result);
// Let N be last - first.
// Preconditions: [first,middle) and [middle,last) are valid ranges. The ranges [first,last) and
[result,result + N) do not overlap.
// Effects: Copies the range [first,last) to the range [result,result + N) such that for each non- negative integer i < N the following assignment takes place: *(result + i) = *(first + (i + (middle - first)) % N).
// Returns:— result + N for the overloads in namespace std.
// — {last, result + N} for the overload in namespace ranges.
// Complexity: Exactly N assignments.
         indirectly_copyable<iterator_t<R>, O> &&
         uniform_random_bit_generator<remove_reference_t<Gen>>
O ranges::sample(R&& r, O out, range_difference_t<R> n, Gen&& g);
// Mandates: For the overload in namespace std, Distance is an integer type and *first is writable (25.3.1) to out.
// Preconditions: out is not in the range [first, last). For the overload in namespace std:
// — PopulationIterator meets the Cpp17InputIterator requirements (25.3.5.3).
// — SampleIterator meets the Cpp17OutputIterator requirements (25.3.5.4).
// — SampleIterator meets the Cpp17RandomAccessIterator requirements (25.3.5.7) unless Populat- ionIterator meets the Cpp17ForwardIterator requirements (25.3.5.5).
// — remove_reference_t<UniformRandomBitGenerator> meets the requirements of a uniform ran- dom bit generator type (28.5.3.3).
// Effects: Copies min(last - first, n) elements (the sample) from [first,last) (the population) to out such that each possible sample has equal probability of appearance.
// [Note 1: Algorithms that obtain such effects include selection sampling and reservoir sampling. —end note] Returns: The end of the resulting sample range.
// Complexity: O(last - first).
// Remarks:
template<forward_range R, weakly_incrementable O>
  requires indirectly_copyable<iterator_t<R>, O>
  constexpr ranges::rotate_copy_result<borrowed_iterator_t<R>, O>
ranges::rotate_copy(R&& r, iterator_t<R> middle, O result);
// Effects: Equivalent to:
return ranges::rotate_copy(ranges::begin(r), middle, ranges::end(r), result);
// 27.7.12 Sample [alg.random.sample]
template<class PopulationIterator, class SampleIterator,
         class Distance, class UniformRandomBitGenerator>
  SampleIterator sample(PopulationIterator first, PopulationIterator last,
                        SampleIterator out, Distance n,
                        UniformRandomBitGenerator&& g);
template<input_iterator I, sentinel_for<I> S, weakly_incrementable O, class Gen>
  requires (forward_iterator<I> || random_access_iterator<O>) &&
           indirectly_copyable<I, O> &&
           uniform_random_bit_generator<remove_reference_t<Gen>>
  O ranges::sample(I first, S last, O out, iter_difference_t<I> n, Gen&& g);
template<input_range R, weakly_incrementable O, class Gen>
  requires (forward_range<R> || random_access_iterator<O>) &&
// — For the overload in namespace std, stable if and only if PopulationIterator meets the Cpp17For- wardIterator requirements. For the first overload in namespace ranges, stable if and only if I models forward_iterator.
// — To the extent that the implementation of this function makes use of random numbers, the object g serves as the implementation’s source of randomness.
         uniform_random_bit_generator<remove_reference_t<Gen>>
borrowed_iterator_t<R> ranges::shuffle(R&& r, Gen&& g);
Preconditions: For the overload in namespace std:
// Preconditions: n >= 0 is true. For the overloads in namespace std, the type of *first meets the Cpp17MoveAssignable requirements.
// Effects: If n == 0 or n >= last - first, does nothing. Otherwise, moves the element from position first + n + i into position first + i for each non-negative integer i < (last - first) - n. For the overloads without an ExecutionPolicy template parameter, does so in order starting from i = 0 and proceeding to i = (last - first) - n - 1.
Returns: Let NEW_LAST be first + (last - first - n) if n < last - first, otherwise first.  NEW_LAST for the overloads in namespace std.
// — {first, NEW_LAST } for the overloads in namespace ranges.
// 27.7.13 Shuffle [alg.random.shuffle]
template<class RandomAccessIterator, class UniformRandomBitGenerator>
  void shuffle(RandomAccessIterator first,
               RandomAccessIterator last,
               UniformRandomBitGenerator&& g);
template<random_access_iterator I, sentinel_for<I> S, class Gen>
  requires permutable<I> &&
           uniform_random_bit_generator<remove_reference_t<Gen>>
  I ranges::shuffle(I first, S last, Gen&& g);
template<random_access_range R, class Gen>
  requires permutable<iterator_t<R>> &&
// — RandomAccessIterator meets the Cpp17ValueSwappable requirements (16.4.4.3).
// — The type remove_reference_t<UniformRandomBitGenerator> meets the uniform random bit generator (28.5.3.3) requirements.
// Effects: Permutes the elements in the range [first, last) such that each possible permutation of those elements has equal probability of appearance.
// Returns: last for the overloads in namespace ranges. Complexity: Exactly (last - first) - 1 swaps.
// Remarks: To the extent that the implementation of this function makes use of random numbers, the object referenced by g shall serve as the implementation’s source of randomness.
// 27.7.14 Shift [alg.shift]
template<class ForwardIterator>
  constexpr ForwardIterator
    shift_left(ForwardIterator first, ForwardIterator last,
               typename iterator_traits<ForwardIterator>::difference_type n);
template<class ExecutionPolicy, class ForwardIterator>
  ForwardIterator
    shift_left(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last,
               typename iterator_traits<ForwardIterator>::difference_type n);
template<permutable I, sentinel_for<I> S>
  constexpr subrange<I> ranges::shift_left(I first, S last, iter_difference_t<I> n);
template<forward_range R>
  requires permutable<iterator_t<R>>
  constexpr borrowed_subrange_t<R> ranges::shift_left(R&& r, range_difference_t<R> n)
// Preconditions: n >= 0 is true. For the overloads in namespace std, the type of *first meets the Cpp17MoveAssignable requirements, and ForwardIterator meets the Cpp17BidirectionalIterator requirements (25.3.5.6) or the Cpp17ValueSwappable requirements.
// Effects: If n == 0 or n >= last - first, does nothing. Otherwise, moves the element from position first + i into position first + n + i for each non-negative integer i < (last - first) - n. Does soinorderstartingfromi = (last - first) - n - 1andproceedingtoi = 0if:
// — for the overload in namespace std without an ExecutionPolicy template parameter, Forward- Iterator meets the Cpp17BidirectionalIterator requirements,
// Complexity: At most (last - first) - n assignments.
template<class ForwardIterator>
  constexpr ForwardIterator
    shift_right(ForwardIterator first, ForwardIterator last,
                typename iterator_traits<ForwardIterator>::difference_type n);
template<class ExecutionPolicy, class ForwardIterator>
  ForwardIterator
    shift_right(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last,
                typename iterator_traits<ForwardIterator>::difference_type n);
template<permutable I, sentinel_for<I> S>
  constexpr subrange<I> ranges::shift_right(I first, S last, iter_difference_t<I> n);
template<forward_range R>
  requires permutable<iterator_t<R>>
  constexpr borrowed_subrange_t<R> ranges::shift_right(R&& r, range_difference_t<R> n);
// — for the overloads in namespace ranges, I models bidirectional_iterator. 
// Returns: Let NEW_FIRST be first + n if n < last - first, otherwise last.
// — NEW_FIRST for the overloads in namespace std.
// — {NEW_FIRST , last} for the overloads in namespace ranges. 
// Complexity: At most (last - first) - n assignments or swaps.
int main(){
  cout  <<  n4910 << endl;
  return EXIT_SUCCESS;
}

編纂・実行結果(compile and go)

bash
$ clang++ p1205.cpp -std=03 -o p1205l -I. -Wall
In file included from p1205.cpp:10:
In file included from ./N4910.h:11:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/atomic:38:
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/c++0x_warning.h:32:2: error: This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
#error This file requires compiler and library support \
 ^
p1205.cpp:17:3: error: unknown type name 'constexpr'
  constexpr OutputIterator copy(InputIterator first, InputIterator last,
  ^
p1205.cpp:17:13: warning: variable templates are a C++14 extension [-Wc++14-extensions]
  constexpr OutputIterator copy(InputIterator first, InputIterator last,
            ^
p1205.cpp:17:27: error: expected ';' at end of declaration
  constexpr OutputIterator copy(InputIterator first, InputIterator last,
                          ^
                          ;
p1205.cpp:17:33: error: unknown type name 'InputIterator'
  constexpr OutputIterator copy(InputIterator first, InputIterator last,
                                ^
p1205.cpp:17:54: error: unknown type name 'InputIterator'
  constexpr OutputIterator copy(InputIterator first, InputIterator last,
                                                     ^
p1205.cpp:18:33: error: unknown type name 'OutputIterator'
                                OutputIterator result);
                                ^
p1205.cpp:17:28: error: C++ requires a type specifier for all declarations
  constexpr OutputIterator copy(InputIterator first, InputIterator last,
                           ^
p1205.cpp:19:10: error: unknown type name 'input_iterator'
template<input_iterator I, sentinel_for<I> S, weakly_incrementable O>
         ^
p1205.cpp:19:28: error: no template named 'sentinel_for'
template<input_iterator I, sentinel_for<I> S, weakly_incrementable O>
                           ^
p1205.cpp:19:47: error: unknown type name 'weakly_incrementable'
template<input_iterator I, sentinel_for<I> S, weakly_incrementable O>
                                              ^
p1205.cpp:20:3: error: unknown type name 'requires'
  requires indirectly_copyable<I, O>
  ^
p1205.cpp:20:12: error: no variable template matches partial specialization
  requires indirectly_copyable<I, O>
           ^
p1205.cpp:20:37: error: expected ';' at end of declaration
  requires indirectly_copyable<I, O>
                                    ^
                                    ;
p1205.cpp:21:3: error: unknown type name 'constexpr'
  constexpr ranges::copy_result<I, O> ranges::copy(I first, S last, O result);
  ^
p1205.cpp:21:13: error: use of undeclared identifier 'ranges'
  constexpr ranges::copy_result<I, O> ranges::copy(I first, S last, O result);
            ^
p1205.cpp:22:10: error: unknown type name 'input_range'
template<input_range R, weakly_incrementable O>
         ^
p1205.cpp:22:25: error: unknown type name 'weakly_incrementable'
template<input_range R, weakly_incrementable O>
                        ^
p1205.cpp:23:3: error: unknown type name 'requires'
  requires indirectly_copyable<iterator_t<R>, O>
  ^
p1205.cpp:23:32: error: use of undeclared identifier 'iterator_t'
  requires indirectly_copyable<iterator_t<R>, O>
                               ^
p1205.cpp:33:40: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
  ForwardIterator2 copy(ExecutionPolicy&& policy,
                                       ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
2 warnings and 20 errors generated.
$ clang++ p1205.cpp -std=2b -o p1205l -I. -Wall
p1205.cpp:21:47: error: redefinition of 'copy' as different kind of symbol
  constexpr ranges::copy_result<I, O> ranges::copy(I first, S last, O result);
                                              ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/ranges_algobase.h:321:30: note: previous definition is here
  inline constexpr __copy_fn copy{};
                             ^
p1205.cpp:22:10: error: unknown type name 'input_range'
template<input_range R, weakly_incrementable O>
         ^
p1205.cpp:23:32: error: use of undeclared identifier 'iterator_t'
  requires indirectly_copyable<iterator_t<R>, O>
                               ^
p1205.cpp:38:1: error: unknown type name 'Complexity'
Complexity: Exactly last - first assignments.
^
p1205.cpp:38:11: error: expected unqualified-id
Complexity: Exactly last - first assignments.
          ^
p1205.cpp:51:43: error: use of undeclared identifier 'iterator_t'
       indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
                                          ^
p1205.cpp:63:1: error: expected unqualified-id
requires indirectly_copyable<iterator_t<R>, I>
^
p1205.cpp:80:21: error: no template named 'copy_if_result' in namespace 'std::ranges'; did you mean 'copy_n_result'?
  constexpr ranges::copy_if_result<I, O>
            ~~~~~~~~^~~~~~~~~~~~~~
                    copy_n_result
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/ranges_algobase.h:492:5: note: 'copy_n_result' declared here
    using copy_n_result = in_out_result<_Iter, _Out>;
    ^
p1205.cpp:81:13: error: out-of-line declaration of 'copy_if' does not match any declaration in namespace 'std::ranges'
    ranges::copy_if(I first, S last, O result, Pred pred, Proj proj = {});
            ^~~~~~~
p1205.cpp:82:10: error: unknown type name 'input_range'
template<input_range R, weakly_incrementable O, class Proj = identity,
         ^
p1205.cpp:84:3: error: template template parameter requires 'class' or 'typename' after the parameter list
  constexpr BidirectionalIterator2
  ^
p1205.cpp:84:3: error: expected identifier
p1205.cpp:87:49: error: expected ',' or '>' in template-parameter-list
                  BidirectionalIterator2 result);
                                                ^
p1205.cpp:87:49: error: declaration does not declare anything
p1205.cpp:91:13: error: redefinition of 'copy_backward' as different kind of symbol
    ranges::copy_backward(I1 first, S1 last, I2 result);
            ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/ranges_algobase.h:464:39: note: previous definition is here
  inline constexpr __copy_backward_fn copy_backward{};
                                      ^
p1205.cpp:92:10: error: unknown type name 'bidirectional_range'
template<bidirectional_range R, bidirectional_iterator I>
         ^
p1205.cpp:92:1: error: extraneous template parameter list in template specialization or out-of-line template definition
template<bidirectional_range R, bidirectional_iterator I>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:104:13: error: redefinition of 'move' as different kind of symbol
    ranges::move(I first, S last, O result);
            ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/ranges_algobase.h:346:30: note: previous definition is here
  inline constexpr __move_fn move{};
                             ^
p1205.cpp:105:10: error: unknown type name 'input_range'
template<input_range R, weakly_incrementable O>
         ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.

$ g++ p1205.cpp -std=03 -o p1205g -I. -Wall
In file included from /usr/local/include/c++/12.1.0/atomic:38,
                 from N4910.h:11,
                 from p1205.cpp:10:
/usr/local/include/c++/12.1.0/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
   32 | #error This file requires compiler and library support \
      |  ^~~~~
p1205.cpp:17:3: warning: identifier 'constexpr' is a keyword in C++11 [-Wc++11-compat]
   17 |   constexpr OutputIterator copy(InputIterator first, InputIterator last,
      |   ^~~~~~~~~
p1205.cpp:17:3: error: 'constexpr' does not name a type
p1205.cpp:17:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:19:10: error: 'input_iterator' has not been declared
   19 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O>
      |          ^~~~~~~~~~~~~~
p1205.cpp:19:28: error: 'sentinel_for' has not been declared
   19 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O>
      |                            ^~~~~~~~~~~~
p1205.cpp:19:40: error: expected '>' before '<' token
   19 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O>
      |                                        ^
p1205.cpp:20:3: error: 'requires' does not name a type
   20 |   requires indirectly_copyable<I, O>
      |   ^~~~~~~~
p1205.cpp:20:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:22:10: error: 'input_range' has not been declared
   22 | template<input_range R, weakly_incrementable O>
      |          ^~~~~~~~~~~
p1205.cpp:22:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:22:25: error: 'weakly_incrementable' has not been declared
   22 | template<input_range R, weakly_incrementable O>
      |                         ^~~~~~~~~~~~~~~~~~~~
p1205.cpp:23:3: error: 'requires' does not name a type
   23 |   requires indirectly_copyable<iterator_t<R>, O>
      |   ^~~~~~~~
p1205.cpp:23:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:33:40: error: expected ',' or '...' before '&&' token
   33 |   ForwardIterator2 copy(ExecutionPolicy&& policy,
      |                                        ^~
p1205.cpp:38:11: error: found ':' in nested-name-specifier, expected '::'
   38 | Complexity: Exactly last - first assignments.
      |           ^
      |           ::
p1205.cpp:38:1: error: 'Complexity' does not name a type
   38 | Complexity: Exactly last - first assignments.
      | ^~~~~~~~~~
p1205.cpp:43:42: error: expected ',' or '...' before '&&' token
   43 |   ForwardIterator2 copy_n(ExecutionPolicy&& exec,
      |                                          ^~
p1205.cpp:46:10: error: 'input_iterator' has not been declared
   46 | template<input_iterator I, weakly_incrementable O>
      |          ^~~~~~~~~~~~~~
p1205.cpp:46:28: error: 'weakly_incrementable' has not been declared
   46 | template<input_iterator I, weakly_incrementable O>
      |                            ^~~~~~~~~~~~~~~~~~~~
p1205.cpp:47:3: error: 'requires' does not name a type
   47 |   requires indirectly_copyable<I, O>
      |   ^~~~~~~~
p1205.cpp:47:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:54:61: error: expected unqualified-id before ')' token
   54 |   ranges::copy_if(R&& r, O result, Pred pred, Proj proj = {});
      |                                                             ^
p1205.cpp:63:1: error: 'requires' does not name a type
   63 | requires indirectly_copyable<iterator_t<R>, I>
      | ^~~~~~~~
p1205.cpp:63:1: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:70:3: error: 'constexpr' does not name a type
   70 |   constexpr OutputIterator copy_if(InputIterator first, InputIterator last,
      |   ^~~~~~~~~
p1205.cpp:70:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:74:43: error: expected ',' or '...' before '&&' token
   74 |   ForwardIterator2 copy_if(ExecutionPolicy&& exec,
      |                                           ^~
p1205.cpp:77:10: error: 'input_iterator' has not been declared
   77 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O, class Proj = identity,
      |          ^~~~~~~~~~~~~~
p1205.cpp:77:28: error: 'sentinel_for' has not been declared
   77 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O, class Proj = identity,
      |                            ^~~~~~~~~~~~
p1205.cpp:77:40: error: expected '>' before '<' token
   77 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O, class Proj = identity,
      |                                        ^
p1205.cpp:81:71: error: expected unqualified-id before '{' token
   81 |     ranges::copy_if(I first, S last, O result, Pred pred, Proj proj = {});
      |                                                                       ^
p1205.cpp:81:73: error: expected unqualified-id before ')' token
   81 |     ranges::copy_if(I first, S last, O result, Pred pred, Proj proj = {});
      |                                                                         ^
p1205.cpp:82:10: error: 'input_range' has not been declared
   82 | template<input_range R, weakly_incrementable O, class Proj = identity,
      |          ^~~~~~~~~~~
p1205.cpp:82:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:82:25: error: 'weakly_incrementable' has not been declared
   82 | template<input_range R, weakly_incrementable O, class Proj = identity,
      |                         ^~~~~~~~~~~~~~~~~~~~
p1205.cpp:82:62: error: 'identity' does not name a type
   82 | template<input_range R, weakly_incrementable O, class Proj = identity,
      |                                                              ^~~~~~~~
p1205.cpp:84:3: error: expected 'class' or 'typename' before 'constexpr'
   84 |   constexpr BidirectionalIterator2
      |   ^~~~~~~~~
p1205.cpp:84:13: error: expected '>' before 'BidirectionalIterator2'
   84 |   constexpr BidirectionalIterator2
      |             ^~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:87:49: error: expected unqualified-id before ';' token
   87 |                   BidirectionalIterator2 result);
      |                                                 ^
p1205.cpp:88:10: error: 'bidirectional_iterator' has not been declared
   88 | template<bidirectional_iterator I1, sentinel_for<I1> S1, bidirectional_iterator I2>
      |          ^~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:88:37: error: 'sentinel_for' has not been declared
   88 | template<bidirectional_iterator I1, sentinel_for<I1> S1, bidirectional_iterator I2>
      |                                     ^~~~~~~~~~~~
p1205.cpp:88:49: error: expected '>' before '<' token
   88 | template<bidirectional_iterator I1, sentinel_for<I1> S1, bidirectional_iterator I2>
      |                                                 ^
p1205.cpp:89:3: error: 'requires' does not name a type
   89 |   requires indirectly_copyable<I1, I2>
      |   ^~~~~~~~
p1205.cpp:89:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:92:10: error: 'bidirectional_range' has not been declared
   92 | template<bidirectional_range R, bidirectional_iterator I>
      |          ^~~~~~~~~~~~~~~~~~~
p1205.cpp:92:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:92:33: error: 'bidirectional_iterator' has not been declared
   92 | template<bidirectional_range R, bidirectional_iterator I>
      |                                 ^~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:99:3: error: 'constexpr' does not name a type
   99 |   constexpr OutputIterator move(InputIterator first, InputIterator last,
      |   ^~~~~~~~~
p1205.cpp:99:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:101:10: error: 'input_iterator' has not been declared
  101 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O>
      |          ^~~~~~~~~~~~~~
p1205.cpp:101:28: error: 'sentinel_for' has not been declared
  101 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O>
      |                            ^~~~~~~~~~~~
p1205.cpp:101:40: error: expected '>' before '<' token
  101 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O>
      |                                        ^
p1205.cpp:102:3: error: 'requires' does not name a type
  102 |   requires indirectly_movable<I, O>
      |   ^~~~~~~~
p1205.cpp:102:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:105:10: error: 'input_range' has not been declared
  105 | template<input_range R, weakly_incrementable O>
      |          ^~~~~~~~~~~
p1205.cpp:105:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:105:25: error: 'weakly_incrementable' has not been declared
  105 | template<input_range R, weakly_incrementable O>
      |                         ^~~~~~~~~~~~~~~~~~~~
p1205.cpp:106:3: error: 'requires' does not name a type
  106 |   requires indirectly_movable<iterator_t<R>, O>
      |   ^~~~~~~~
p1205.cpp:106:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:118:40: error: expected ',' or '...' before '&&' token
  118 |   ForwardIterator2 move(ExecutionPolicy&& policy,
      |                                        ^~
p1205.cpp:127:3: error: 'constexpr' does not name a type
  127 |   constexpr BidirectionalIterator2
      |   ^~~~~~~~~
p1205.cpp:127:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:130:10: error: 'bidirectional_iterator' has not been declared
  130 | template<bidirectional_iterator I1, sentinel_for<I1> S1, bidirectional_iterator I2>
      |          ^~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:130:37: error: 'sentinel_for' has not been declared
  130 | template<bidirectional_iterator I1, sentinel_for<I1> S1, bidirectional_iterator I2>
      |                                     ^~~~~~~~~~~~
p1205.cpp:130:49: error: expected '>' before '<' token
  130 | template<bidirectional_iterator I1, sentinel_for<I1> S1, bidirectional_iterator I2>
      |                                                 ^
p1205.cpp:131:3: error: 'requires' does not name a type
  131 |   requires indirectly_movable<I1, I2>
      |   ^~~~~~~~
p1205.cpp:131:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:134:10: error: 'bidirectional_range' has not been declared
  134 | template<bidirectional_range R, bidirectional_iterator I>
      |          ^~~~~~~~~~~~~~~~~~~
p1205.cpp:134:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:134:33: error: 'bidirectional_iterator' has not been declared
  134 | template<bidirectional_range R, bidirectional_iterator I>
      |                                 ^~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:135:3: error: 'requires' does not name a type
  135 |   requires indirectly_movable<iterator_t<R>, I>
      |   ^~~~~~~~
p1205.cpp:135:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:143:1: error: 'requires' does not name a type
  143 | requires indirectly_swappable<iterator_t<R1>, iterator_t<R2>>
      | ^~~~~~~~
p1205.cpp:143:1: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:160:3: error: 'constexpr' does not name a type
  160 |   constexpr ForwardIterator2
      |   ^~~~~~~~~
p1205.cpp:160:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:165:32: error: expected ',' or '...' before '&&' token
  165 |     swap_ranges(ExecutionPolicy&& exec,
      |                                ^~
p1205.cpp:168:10: error: 'input_iterator' has not been declared
  168 | template<input_iterator I1, sentinel_for<I1> S1, input_iterator I2, sentinel_for<I2> S2>
      |          ^~~~~~~~~~~~~~
p1205.cpp:168:29: error: 'sentinel_for' has not been declared
  168 | template<input_iterator I1, sentinel_for<I1> S1, input_iterator I2, sentinel_for<I2> S2>
      |                             ^~~~~~~~~~~~
p1205.cpp:168:41: error: expected '>' before '<' token
  168 | template<input_iterator I1, sentinel_for<I1> S1, input_iterator I2, sentinel_for<I2> S2>
      |                                         ^
p1205.cpp:169:3: error: 'requires' does not name a type
  169 |   requires indirectly_swappable<I1, I2>
      |   ^~~~~~~~
p1205.cpp:169:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:172:10: error: 'input_range' has not been declared
  172 | template<input_range R1, input_range R2>
      |          ^~~~~~~~~~~
p1205.cpp:172:26: error: 'input_range' has not been declared
  172 | template<input_range R1, input_range R2>
      |                          ^~~~~~~~~~~
p1205.cpp:173:1: error: 'requires' does not name a type
  173 | requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R1>, Proj1>,
      | ^~~~~~~~
p1205.cpp:173:1: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:177:50: error: expected unqualified-id before ',' token
  177 |                     F binary_op, Proj1 proj1 = {}, Proj2 proj2 = {});
      |                                                  ^
p1205.cpp:177:58: error: expected constructor, destructor, or type conversion before 'proj2'
  177 |                     F binary_op, Proj1 proj1 = {}, Proj2 proj2 = {});
      |                                                          ^~~~~
p1205.cpp:177:68: error: expected unqualified-id before ')' token
  177 |                     F binary_op, Proj1 proj1 = {}, Proj2 proj2 = {});
      |                                                                    ^
p1205.cpp:180:6: error: 'constexpr' does not name a type
  180 |      constexpr void iter_swap(ForwardIterator1 a, ForwardIterator2 b);
      |      ^~~~~~~~~
p1205.cpp:180:6: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:185:3: error: 'constexpr' does not name a type
  185 |   constexpr OutputIterator
      |   ^~~~~~~~~
p1205.cpp:185:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:191:30: error: expected ',' or '...' before '&&' token
  191 |     transform(ExecutionPolicy&& exec,
      |                              ^~
p1205.cpp:196:3: error: 'constexpr' does not name a type
  196 |   constexpr OutputIterator
      |   ^~~~~~~~~
p1205.cpp:196:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:203:30: error: expected ',' or '...' before '&&' token
  203 |     transform(ExecutionPolicy&& exec,
      |                              ^~
p1205.cpp:207:10: error: 'input_iterator' has not been declared
  207 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O,
      |          ^~~~~~~~~~~~~~
p1205.cpp:207:28: error: 'sentinel_for' has not been declared
  207 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O,
      |                            ^~~~~~~~~~~~
p1205.cpp:207:40: error: expected '>' before '<' token
  207 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O,
      |                                        ^
p1205.cpp:209:3: error: 'requires' does not name a type
  209 |   requires indirectly_writable<O, indirect_result_t<F&, projected<I, Proj>>>
      |   ^~~~~~~~
p1205.cpp:209:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:211:72: error: expected unqualified-id before ')' token
  211 |     ranges::transform(I first1, S last1, O result, F op, Proj proj = {});
      |                                                                        ^
p1205.cpp:212:10: error: 'input_range' has not been declared
  212 | template<input_range R, weakly_incrementable O, copy_constructible F,
      |          ^~~~~~~~~~~
p1205.cpp:212:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:212:25: error: 'weakly_incrementable' has not been declared
  212 | template<input_range R, weakly_incrementable O, copy_constructible F,
      |                         ^~~~~~~~~~~~~~~~~~~~
p1205.cpp:212:49: error: 'copy_constructible' has not been declared
  212 | template<input_range R, weakly_incrementable O, copy_constructible F,
      |                                                 ^~~~~~~~~~~~~~~~~~
p1205.cpp:213:23: error: 'identity' does not name a type
  213 |          class Proj = identity>
      |                       ^~~~~~~~
p1205.cpp:214:3: error: 'requires' does not name a type
  214 |   requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R>, Proj>>>
      |   ^~~~~~~~
p1205.cpp:214:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:216:60: error: expected unqualified-id before ')' token
  216 |     ranges::transform(R&& r, O result, F op, Proj proj = {});
      |                                                            ^
p1205.cpp:217:10: error: 'input_iterator' has not been declared
  217 | template<input_iterator I1, sentinel_for<I1> S1, input_iterator I2, sentinel_for<I2> S2,
      |          ^~~~~~~~~~~~~~
p1205.cpp:217:29: error: 'sentinel_for' has not been declared
  217 | template<input_iterator I1, sentinel_for<I1> S1, input_iterator I2, sentinel_for<I2> S2,
      |                             ^~~~~~~~~~~~
p1205.cpp:217:41: error: expected '>' before '<' token
  217 | template<input_iterator I1, sentinel_for<I1> S1, input_iterator I2, sentinel_for<I2> S2,
      |                                         ^
p1205.cpp:220:3: error: 'requires' does not name a type
  220 |   requires indirectly_writable<O, indirect_result_t<F&, projected<I1, Proj1>,
      |   ^~~~~~~~
p1205.cpp:220:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:224:52: error: expected unqualified-id before ',' token
  224 |                       F binary_op, Proj1 proj1 = {}, Proj2 proj2 = {});
      |                                                    ^
p1205.cpp:224:60: error: expected constructor, destructor, or type conversion before 'proj2'
  224 |                       F binary_op, Proj1 proj1 = {}, Proj2 proj2 = {});
      |                                                            ^~~~~
p1205.cpp:224:70: error: expected unqualified-id before ')' token
  224 |                       F binary_op, Proj1 proj1 = {}, Proj2 proj2 = {});
      |                                                                      ^
p1205.cpp:225:10: error: 'input_range' has not been declared
  225 | template<input_range R1, input_range R2, weakly_incrementable O,
      |          ^~~~~~~~~~~
p1205.cpp:225:26: error: 'input_range' has not been declared
  225 | template<input_range R1, input_range R2, weakly_incrementable O,
      |                          ^~~~~~~~~~~
p1205.cpp:225:42: error: 'weakly_incrementable' has not been declared
  225 | template<input_range R1, input_range R2, weakly_incrementable O,
      |                                          ^~~~~~~~~~~~~~~~~~~~
p1205.cpp:226:10: error: 'copy_constructible' has not been declared
  226 |          copy_constructible F, class Proj1 = identity, class Proj2 = identity>
      |          ^~~~~~~~~~~~~~~~~~
p1205.cpp:226:46: error: 'identity' does not name a type
  226 |          copy_constructible F, class Proj1 = identity, class Proj2 = identity>
      |                                              ^~~~~~~~
p1205.cpp:226:70: error: 'identity' does not name a type
  226 |          copy_constructible F, class Proj1 = identity, class Proj2 = identity>
      |                                                                      ^~~~~~~~
p1205.cpp:244:3: error: 'constexpr' does not name a type
  244 |   constexpr void replace(ForwardIterator first, ForwardIterator last,
      |   ^~~~~~~~~
p1205.cpp:244:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:247:31: error: expected ',' or '...' before '&&' token
  247 |   void replace(ExecutionPolicy&& exec,
      |                               ^~
p1205.cpp:251:3: error: 'constexpr' does not name a type
  251 |   constexpr void replace_if(ForwardIterator first, ForwardIterator last,
      |   ^~~~~~~~~
p1205.cpp:251:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:254:34: error: expected ',' or '...' before '&&' token
  254 |   void replace_if(ExecutionPolicy&& exec,
      |                                  ^~
p1205.cpp:257:10: error: 'input_iterator' has not been declared
  257 | template<input_iterator I, sentinel_for<I> S, class T1, class T2, class Proj = identity>
      |          ^~~~~~~~~~~~~~
p1205.cpp:257:28: error: 'sentinel_for' has not been declared
  257 | template<input_iterator I, sentinel_for<I> S, class T1, class T2, class Proj = identity>
      |                            ^~~~~~~~~~~~
p1205.cpp:257:40: error: expected '>' before '<' token
  257 | template<input_iterator I, sentinel_for<I> S, class T1, class T2, class Proj = identity>
      |                                        ^
p1205.cpp:258:3: error: 'requires' does not name a type
  258 |   requires indirectly_writable<I, const T2&> &&
      |   ^~~~~~~~
p1205.cpp:258:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:261:94: error: expected unqualified-id before ')' token
  261 |     ranges::replace(I first, S last, const T1& old_value, const T2& new_value, Proj proj = {});
      |                                                                                              ^
p1205.cpp:262:10: error: 'input_range' has not been declared
  262 | template<input_range R, class T1, class T2, class Proj = identity>
      |          ^~~~~~~~~~~
p1205.cpp:262:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:262:58: error: 'identity' does not name a type
  262 | template<input_range R, class T1, class T2, class Proj = identity>
      |                                                          ^~~~~~~~
p1205.cpp:263:3: error: 'requires' does not name a type
  263 |   requires indirectly_writable<iterator_t<R>, const T2&> &&
      |   ^~~~~~~~
p1205.cpp:263:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:266:84: error: expected unqualified-id before ')' token
  266 |     ranges::replace(R&& r, const T1& old_value, const T2& new_value, Proj proj = {});
      |                                                                                    ^
p1205.cpp:267:10: error: 'input_iterator' has not been declared
  267 | template<input_iterator I, sentinel_for<I> S, class T, class Proj = identity,
      |          ^~~~~~~~~~~~~~
p1205.cpp:267:28: error: 'sentinel_for' has not been declared
  267 | template<input_iterator I, sentinel_for<I> S, class T, class Proj = identity,
      |                            ^~~~~~~~~~~~
p1205.cpp:267:40: error: expected '>' before '<' token
  267 | template<input_iterator I, sentinel_for<I> S, class T, class Proj = identity,
      |                                        ^
p1205.cpp:270:94: error: expected unqualified-id before '{' token
  270 |   constexpr I ranges::replace_if(I first, S last, Pred pred, const T& new_value, Proj proj = {});
      |                                                                                              ^
p1205.cpp:270:96: error: expected unqualified-id before ')' token
  270 |   constexpr I ranges::replace_if(I first, S last, Pred pred, const T& new_value, Proj proj = {});
      |                                                                                                ^
p1205.cpp:271:10: error: 'input_range' has not been declared
  271 | template<input_range R, class T, class Proj = identity,
      |          ^~~~~~~~~~~
p1205.cpp:271:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:271:47: error: 'identity' does not name a type
  271 | template<input_range R, class T, class Proj = identity,
      |                                               ^~~~~~~~
p1205.cpp:272:10: error: 'indirect_unary_predicate' has not been declared
  272 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:272:34: error: expected '>' before '<' token
  272 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |                                  ^
p1205.cpp:275:74: error: expected unqualified-id before '{' token
  275 |     ranges::replace_if(R&& r, Pred pred, const T& new_value, Proj proj = {});
      |                                                                          ^
p1205.cpp:275:76: error: expected unqualified-id before ')' token
  275 |     ranges::replace_if(R&& r, Pred pred, const T& new_value, Proj proj = {});
      |                                                                            ^
p1205.cpp:285:3: error: 'constexpr' does not name a type
  285 |   constexpr OutputIterator
      |   ^~~~~~~~~
p1205.cpp:285:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:291:33: error: expected ',' or '...' before '&&' token
  291 |     replace_copy(ExecutionPolicy&& exec,
      |                                 ^~
p1205.cpp:296:3: error: 'constexpr' does not name a type
  296 |   constexpr OutputIterator
      |   ^~~~~~~~~
p1205.cpp:296:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:303:36: error: expected ',' or '...' before '&&' token
  303 |     replace_copy_if(ExecutionPolicy&& exec,
      |                                    ^~
p1205.cpp:307:10: error: 'input_iterator' has not been declared
  307 | template<input_iterator I, sentinel_for<I> S, class T1, class T2, output_iterator<const T2&> O,
      |          ^~~~~~~~~~~~~~
p1205.cpp:307:28: error: 'sentinel_for' has not been declared
  307 | template<input_iterator I, sentinel_for<I> S, class T1, class T2, output_iterator<const T2&> O,
      |                            ^~~~~~~~~~~~
p1205.cpp:307:40: error: expected '>' before '<' token
  307 | template<input_iterator I, sentinel_for<I> S, class T1, class T2, output_iterator<const T2&> O,
      |                                        ^
p1205.cpp:309:3: error: 'requires' does not name a type
  309 |   requires indirectly_copyable<I, O> &&
      |   ^~~~~~~~
p1205.cpp:309:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:313:40: error: expected unqualified-id before ')' token
  313 |                          Proj proj = {});
      |                                        ^
p1205.cpp:314:10: error: 'input_range' has not been declared
  314 | template<input_range R, class T1, class T2, output_iterator<const T2&> O,
      |          ^~~~~~~~~~~
p1205.cpp:314:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:314:45: error: 'output_iterator' has not been declared
  314 | template<input_range R, class T1, class T2, output_iterator<const T2&> O,
      |                                             ^~~~~~~~~~~~~~~
p1205.cpp:314:60: error: expected '>' before '<' token
  314 | template<input_range R, class T1, class T2, output_iterator<const T2&> O,
      |                                                            ^
p1205.cpp:316:3: error: 'requires' does not name a type
  316 |   requires indirectly_copyable<iterator_t<R>, O> &&
      |   ^~~~~~~~
p1205.cpp:316:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:320:40: error: expected unqualified-id before ')' token
  320 |                          Proj proj = {});
      |                                        ^
p1205.cpp:321:10: error: 'input_iterator' has not been declared
  321 | template<input_iterator I, sentinel_for<I> S, class T, output_iterator<const T&> O,
      |          ^~~~~~~~~~~~~~
p1205.cpp:321:28: error: 'sentinel_for' has not been declared
  321 | template<input_iterator I, sentinel_for<I> S, class T, output_iterator<const T&> O,
      |                            ^~~~~~~~~~~~
p1205.cpp:321:40: error: expected '>' before '<' token
  321 | template<input_iterator I, sentinel_for<I> S, class T, output_iterator<const T&> O,
      |                                        ^
p1205.cpp:326:41: error: expected unqualified-id before '{' token
  326 |                             Proj proj = {});
      |                                         ^
p1205.cpp:326:43: error: expected unqualified-id before ')' token
  326 |                             Proj proj = {});
      |                                           ^
p1205.cpp:327:10: error: 'input_range' has not been declared
  327 | template<input_range R, class T, output_iterator<const T&> O, class Proj = identity,
      |          ^~~~~~~~~~~
p1205.cpp:327:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:327:34: error: 'output_iterator' has not been declared
  327 | template<input_range R, class T, output_iterator<const T&> O, class Proj = identity,
      |                                  ^~~~~~~~~~~~~~~
p1205.cpp:327:49: error: expected '>' before '<' token
  327 | template<input_range R, class T, output_iterator<const T&> O, class Proj = identity,
      |                                                 ^
p1205.cpp:332:41: error: expected unqualified-id before '{' token
  332 |                             Proj proj = {});
      |                                         ^
p1205.cpp:332:43: error: expected unqualified-id before ')' token
  332 |                             Proj proj = {});
      |                                           ^
p1205.cpp:348:3: error: 'constexpr' does not name a type
  348 |   constexpr void fill(ForwardIterator first, ForwardIterator last, const T& value);
      |   ^~~~~~~~~
p1205.cpp:348:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:350:28: error: expected ',' or '...' before '&&' token
  350 |   void fill(ExecutionPolicy&& exec,
      |                            ^~
p1205.cpp:353:3: error: 'constexpr' does not name a type
  353 |   constexpr OutputIterator fill_n(OutputIterator first, Size n, const T& value);
      |   ^~~~~~~~~
p1205.cpp:353:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:355:41: error: expected ',' or '...' before '&&' token
  355 |   ForwardIterator fill_n(ExecutionPolicy&& exec,
      |                                         ^~
p1205.cpp:357:19: error: 'output_iterator' has not been declared
  357 | template<class T, output_iterator<const T&> O, sentinel_for<O> S>
      |                   ^~~~~~~~~~~~~~~
p1205.cpp:357:34: error: expected '>' before '<' token
  357 | template<class T, output_iterator<const T&> O, sentinel_for<O> S>
      |                                  ^
p1205.cpp:358:3: error: 'constexpr' does not name a type
  358 |   constexpr O ranges::fill(O first, S last, const T& value);
      |   ^~~~~~~~~
p1205.cpp:358:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:359:19: error: 'output_range' has not been declared
  359 | template<class T, output_range<const T&> R>
      |                   ^~~~~~~~~~~~
p1205.cpp:359:31: error: expected '>' before '<' token
  359 | template<class T, output_range<const T&> R>
      |                               ^
p1205.cpp:360:3: error: 'constexpr' does not name a type
  360 |   constexpr borrowed_iterator_t<R> ranges::fill(R&& r, const T& value);
      |   ^~~~~~~~~
p1205.cpp:360:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:361:19: error: 'output_iterator' has not been declared
  361 | template<class T, output_iterator<const T&> O>
      |                   ^~~~~~~~~~~~~~~
p1205.cpp:361:34: error: expected '>' before '<' token
  361 | template<class T, output_iterator<const T&> O>
      |                                  ^
p1205.cpp:362:3: error: 'constexpr' does not name a type
  362 |   constexpr O ranges::fill_n(O first, iter_difference_t<O> n, const T& value);
      |   ^~~~~~~~~
p1205.cpp:362:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:365:3: error: 'constexpr' does not name a type
  365 |   constexpr void generate(ForwardIterator first, ForwardIterator last,
      |   ^~~~~~~~~
p1205.cpp:365:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:368:32: error: expected ',' or '...' before '&&' token
  368 |   void generate(ExecutionPolicy&& exec,
      |                                ^~
p1205.cpp:372:3: error: 'constexpr' does not name a type
  372 |   constexpr OutputIterator generate_n(OutputIterator first, Size n, Generator gen);
      |   ^~~~~~~~~
p1205.cpp:372:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:374:45: error: expected ',' or '...' before '&&' token
  374 |   ForwardIterator generate_n(ExecutionPolicy&& exec,
      |                                             ^~
p1205.cpp:376:10: error: 'input_or_output_iterator' has not been declared
  376 | template<input_or_output_iterator O, sentinel_for<O> S, copy_constructible F>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:376:38: error: 'sentinel_for' has not been declared
  376 | template<input_or_output_iterator O, sentinel_for<O> S, copy_constructible F>
      |                                      ^~~~~~~~~~~~
p1205.cpp:376:50: error: expected '>' before '<' token
  376 | template<input_or_output_iterator O, sentinel_for<O> S, copy_constructible F>
      |                                                  ^
p1205.cpp:377:3: error: 'requires' does not name a type
  377 |   requires invocable<F&> && indirectly_writable<O, invoke_result_t<F&>>
      |   ^~~~~~~~
p1205.cpp:377:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:14:11: error: expected identifier before 'int'
   14 | #define R int
      |           ^~~
p1205.cpp:379:16: note: in expansion of macro 'R'
  379 | template<class R, copy_constructible F>
      |                ^
p1205.cpp:379:10: error: two or more data types in declaration of 'parameter'
  379 | template<class R, copy_constructible F>
      |          ^~~~~
p1205.cpp:379:19: error: 'copy_constructible' has not been declared
  379 | template<class R, copy_constructible F>
      |                   ^~~~~~~~~~~~~~~~~~
p1205.cpp:380:3: error: 'requires' does not name a type
  380 |   requires invocable<F&> && output_range<R, invoke_result_t<F&>>
      |   ^~~~~~~~
p1205.cpp:380:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:382:10: error: 'input_or_output_iterator' has not been declared
  382 | template<input_or_output_iterator O, copy_constructible F>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:382:38: error: 'copy_constructible' has not been declared
  382 | template<input_or_output_iterator O, copy_constructible F>
      |                                      ^~~~~~~~~~~~~~~~~~
p1205.cpp:383:3: error: 'requires' does not name a type
  383 |   requires invocable<F&> && indirectly_writable<O, invoke_result_t<F&>>
      |   ^~~~~~~~
p1205.cpp:383:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:391:3: error: 'constexpr' does not name a type
  391 |   constexpr ForwardIterator remove(ForwardIterator first, ForwardIterator last,
      |   ^~~~~~~~~
p1205.cpp:391:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:394:41: error: expected ',' or '...' before '&&' token
  394 |   ForwardIterator remove(ExecutionPolicy&& exec,
      |                                         ^~
p1205.cpp:398:3: error: 'constexpr' does not name a type
  398 |   constexpr ForwardIterator remove_if(ForwardIterator first, ForwardIterator last,
      |   ^~~~~~~~~
p1205.cpp:398:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:401:44: error: expected ',' or '...' before '&&' token
  401 |   ForwardIterator remove_if(ExecutionPolicy&& exec,
      |                                            ^~
p1205.cpp:404:10: error: 'permutable' has not been declared
  404 | template<permutable I, sentinel_for<I> S, class T, class Proj = identity>
      |          ^~~~~~~~~~
p1205.cpp:404:24: error: 'sentinel_for' has not been declared
  404 | template<permutable I, sentinel_for<I> S, class T, class Proj = identity>
      |                        ^~~~~~~~~~~~
p1205.cpp:404:36: error: expected '>' before '<' token
  404 | template<permutable I, sentinel_for<I> S, class T, class Proj = identity>
      |                                    ^
p1205.cpp:405:3: error: 'requires' does not name a type
  405 |   requires indirect_binary_predicate<ranges::equal_to, projected<I, Proj>, const T*>
      |   ^~~~~~~~
p1205.cpp:405:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:406:87: error: expected unqualified-id before ')' token
  406 |   constexpr subrange<I> ranges::remove(I first, S last, const T& value, Proj proj = {});
      |                                                                                       ^
p1205.cpp:407:10: error: 'forward_range' has not been declared
  407 | template<forward_range R, class T, class Proj = identity>
      |          ^~~~~~~~~~~~~
p1205.cpp:407:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:407:49: error: 'identity' does not name a type
  407 | template<forward_range R, class T, class Proj = identity>
      |                                                 ^~~~~~~~
p1205.cpp:408:3: error: 'requires' does not name a type
  408 |   requires permutable<iterator_t<R>> &&
      |   ^~~~~~~~
p1205.cpp:408:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:411:57: error: expected unqualified-id before ')' token
  411 |     ranges::remove(R&& r, const T& value, Proj proj = {});
      |                                                         ^
p1205.cpp:412:10: error: 'permutable' has not been declared
  412 | template<permutable I, sentinel_for<I> S, class Proj = identity,
      |          ^~~~~~~~~~
p1205.cpp:412:24: error: 'sentinel_for' has not been declared
  412 | template<permutable I, sentinel_for<I> S, class Proj = identity,
      |                        ^~~~~~~~~~~~
p1205.cpp:412:36: error: expected '>' before '<' token
  412 | template<permutable I, sentinel_for<I> S, class Proj = identity,
      |                                    ^
p1205.cpp:414:83: error: expected unqualified-id before '{' token
  414 |   constexpr subrange<I> ranges::remove_if(I first, S last, Pred pred, Proj proj = {});
      |                                                                                   ^
p1205.cpp:414:85: error: expected unqualified-id before ')' token
  414 |   constexpr subrange<I> ranges::remove_if(I first, S last, Pred pred, Proj proj = {});
      |                                                                                     ^
p1205.cpp:415:10: error: 'forward_range' has not been declared
  415 | template<forward_range R, class Proj = identity,
      |          ^~~~~~~~~~~~~
p1205.cpp:415:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:415:40: error: 'identity' does not name a type
  415 | template<forward_range R, class Proj = identity,
      |                                        ^~~~~~~~
p1205.cpp:416:10: error: 'indirect_unary_predicate' has not been declared
  416 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:416:34: error: expected '>' before '<' token
  416 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |                                  ^
p1205.cpp:419:53: error: expected unqualified-id before '{' token
  419 |     ranges::remove_if(R&& r, Pred pred, Proj proj = {});
      |                                                     ^
p1205.cpp:419:55: error: expected unqualified-id before ')' token
  419 |     ranges::remove_if(R&& r, Pred pred, Proj proj = {});
      |                                                       ^
p1205.cpp:433:3: error: 'constexpr' does not name a type
  433 |   constexpr OutputIterator
      |   ^~~~~~~~~
p1205.cpp:433:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:439:32: error: expected ',' or '...' before '&&' token
  439 |     remove_copy(ExecutionPolicy&& exec,
      |                                ^~
p1205.cpp:443:3: error: 'constexpr' does not name a type
  443 |   constexpr OutputIterator
      |   ^~~~~~~~~
p1205.cpp:443:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:449:35: error: expected ',' or '...' before '&&' token
  449 |     remove_copy_if(ExecutionPolicy&& exec,
      |                                   ^~
p1205.cpp:452:10: error: 'input_iterator' has not been declared
  452 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O, class T,
      |          ^~~~~~~~~~~~~~
p1205.cpp:452:28: error: 'sentinel_for' has not been declared
  452 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O, class T,
      |                            ^~~~~~~~~~~~
p1205.cpp:452:40: error: expected '>' before '<' token
  452 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O, class T,
      |                                        ^
p1205.cpp:454:3: error: 'requires' does not name a type
  454 |   requires indirectly_copyable<I, O> &&
      |   ^~~~~~~~
p1205.cpp:454:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:457:82: error: expected unqualified-id before ')' token
  457 |     ranges::remove_copy(I first, S last, O result, const T& value, Proj proj = {});
      |                                                                                  ^
p1205.cpp:458:10: error: 'input_range' has not been declared
  458 | template<input_range R, weakly_incrementable O, class T, class Proj = identity>
      |          ^~~~~~~~~~~
p1205.cpp:458:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:458:25: error: 'weakly_incrementable' has not been declared
  458 | template<input_range R, weakly_incrementable O, class T, class Proj = identity>
      |                         ^~~~~~~~~~~~~~~~~~~~
p1205.cpp:458:71: error: 'identity' does not name a type
  458 | template<input_range R, weakly_incrementable O, class T, class Proj = identity>
      |                                                                       ^~~~~~~~
p1205.cpp:459:3: error: 'requires' does not name a type
  459 |   requires indirectly_copyable<iterator_t<R>, O> &&
      |   ^~~~~~~~
p1205.cpp:459:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:462:72: error: expected unqualified-id before ')' token
  462 |     ranges::remove_copy(R&& r, O result, const T& value, Proj proj = {});
      |                                                                        ^
p1205.cpp:463:10: error: 'input_iterator' has not been declared
  463 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O,
      |          ^~~~~~~~~~~~~~
p1205.cpp:463:28: error: 'sentinel_for' has not been declared
  463 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O,
      |                            ^~~~~~~~~~~~
p1205.cpp:463:40: error: expected '>' before '<' token
  463 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O,
      |                                        ^
p1205.cpp:467:78: error: expected unqualified-id before '{' token
  467 |     ranges::remove_copy_if(I first, S last, O result, Pred pred, Proj proj = {});
      |                                                                              ^
p1205.cpp:467:80: error: expected unqualified-id before ')' token
  467 |     ranges::remove_copy_if(I first, S last, O result, Pred pred, Proj proj = {});
      |                                                                                ^
p1205.cpp:468:10: error: 'input_range' has not been declared
  468 | template<input_range R, weakly_incrementable O, class Proj = identity,
      |          ^~~~~~~~~~~
p1205.cpp:468:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:468:25: error: 'weakly_incrementable' has not been declared
  468 | template<input_range R, weakly_incrementable O, class Proj = identity,
      |                         ^~~~~~~~~~~~~~~~~~~~
p1205.cpp:468:62: error: 'identity' does not name a type
  468 | template<input_range R, weakly_incrementable O, class Proj = identity,
      |                                                              ^~~~~~~~
p1205.cpp:469:10: error: 'indirect_unary_predicate' has not been declared
  469 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:469:34: error: expected '>' before '<' token
  469 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |                                  ^
p1205.cpp:472:68: error: expected unqualified-id before '{' token
  472 |     ranges::remove_copy_if(R&& r, O result, Pred pred, Proj proj = {});
      |                                                                    ^
p1205.cpp:472:70: error: expected unqualified-id before ')' token
  472 |     ranges::remove_copy_if(R&& r, O result, Pred pred, Proj proj = {});
      |                                                                      ^
p1205.cpp:485:8: error: 'indirect_equivalence_relation' does not name a type
  485 |        indirect_equivalence_relation<projected<iterator_t<R>, Proj>> C = ranges::equal_to>
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:488:36: error: expected unqualified-id before ',' token
  488 |   ranges::unique(R&& r, C comp = {}, Proj proj = {});
      |                                    ^
p1205.cpp:488:43: error: expected constructor, destructor, or type conversion before 'proj'
  488 |   ranges::unique(R&& r, C comp = {}, Proj proj = {});
      |                                           ^~~~
p1205.cpp:488:52: error: expected unqualified-id before ')' token
  488 |   ranges::unique(R&& r, C comp = {}, Proj proj = {});
      |                                                    ^
p1205.cpp:492:3: error: 'constexpr' does not name a type
  492 |   constexpr ForwardIterator unique(ForwardIterator first, ForwardIterator last);
      |   ^~~~~~~~~
p1205.cpp:492:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:494:41: error: expected ',' or '...' before '&&' token
  494 |   ForwardIterator unique(ExecutionPolicy&& exec,
      |                                         ^~
p1205.cpp:497:3: error: 'constexpr' does not name a type
  497 |   constexpr ForwardIterator unique(ForwardIterator first, ForwardIterator last,
      |   ^~~~~~~~~
p1205.cpp:497:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:500:41: error: expected ',' or '...' before '&&' token
  500 |   ForwardIterator unique(ExecutionPolicy&& exec,
      |                                         ^~
p1205.cpp:503:10: error: 'permutable' has not been declared
  503 | template<permutable I, sentinel_for<I> S, class Proj = identity,
      |          ^~~~~~~~~~
p1205.cpp:503:24: error: 'sentinel_for' has not been declared
  503 | template<permutable I, sentinel_for<I> S, class Proj = identity,
      |                        ^~~~~~~~~~~~
p1205.cpp:503:36: error: expected '>' before '<' token
  503 | template<permutable I, sentinel_for<I> S, class Proj = identity,
      |                                    ^
p1205.cpp:505:66: error: expected unqualified-id before '{' token
  505 |   constexpr subrange<I> ranges::unique(I first, S last, C comp = {}, Proj proj = {});
      |                                                                  ^
p1205.cpp:505:68: error: expected unqualified-id before ',' token
  505 |   constexpr subrange<I> ranges::unique(I first, S last, C comp = {}, Proj proj = {});
      |                                                                    ^
p1205.cpp:505:75: error: expected constructor, destructor, or type conversion before 'proj'
  505 |   constexpr subrange<I> ranges::unique(I first, S last, C comp = {}, Proj proj = {});
      |                                                                           ^~~~
p1205.cpp:505:84: error: expected unqualified-id before ')' token
  505 |   constexpr subrange<I> ranges::unique(I first, S last, C comp = {}, Proj proj = {});
      |                                                                                    ^
p1205.cpp:506:10: error: 'forward_range' has not been declared
  506 | template<forward_range R, class Proj = identity,
      |          ^~~~~~~~~~~~~
p1205.cpp:506:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:506:40: error: 'identity' does not name a type
  506 | template<forward_range R, class Proj = identity,
      |                                        ^~~~~~~~
p1205.cpp:513:8: error: 'indirect_equivalence_relation' has not been declared
  513 |        indirect_equivalence_relation<projected<iterator_t<R>, Proj>> C = ranges::equal_to>
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:513:37: error: expected '>' before '<' token
  513 |        indirect_equivalence_relation<projected<iterator_t<R>, Proj>> C = ranges::equal_to>
      |                                     ^
p1205.cpp:519:49: error: expected unqualified-id before '{' token
  519 |   ranges::unique_copy(R&& r, O result, C comp = {}, Proj proj = {});
      |                                                 ^
p1205.cpp:519:51: error: expected unqualified-id before ',' token
  519 |   ranges::unique_copy(R&& r, O result, C comp = {}, Proj proj = {});
      |                                                   ^
p1205.cpp:519:58: error: expected constructor, destructor, or type conversion before 'proj'
  519 |   ranges::unique_copy(R&& r, O result, C comp = {}, Proj proj = {});
      |                                                          ^~~~
p1205.cpp:519:67: error: expected unqualified-id before ')' token
  519 |   ranges::unique_copy(R&& r, O result, C comp = {}, Proj proj = {});
      |                                                                   ^
p1205.cpp:525:3: error: 'constexpr' does not name a type
  525 |   constexpr OutputIterator
      |   ^~~~~~~~~
p1205.cpp:525:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:530:32: error: expected ',' or '...' before '&&' token
  530 |     unique_copy(ExecutionPolicy&& exec,
      |                                ^~
p1205.cpp:535:3: error: 'constexpr' does not name a type
  535 |   constexpr OutputIterator
      |   ^~~~~~~~~
p1205.cpp:535:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:541:32: error: expected ',' or '...' before '&&' token
  541 |     unique_copy(ExecutionPolicy&& exec,
      |                                ^~
p1205.cpp:544:10: error: 'input_iterator' has not been declared
  544 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O, class Proj = identity,
      |          ^~~~~~~~~~~~~~
p1205.cpp:544:28: error: 'sentinel_for' has not been declared
  544 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O, class Proj = identity,
      |                            ^~~~~~~~~~~~
p1205.cpp:544:40: error: expected '>' before '<' token
  544 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O, class Proj = identity,
      |                                        ^
p1205.cpp:551:61: error: expected unqualified-id before '{' token
  551 |     ranges::unique_copy(I first, S last, O result, C comp = {}, Proj proj = {});
      |                                                             ^
p1205.cpp:551:63: error: expected unqualified-id before ',' token
  551 |     ranges::unique_copy(I first, S last, O result, C comp = {}, Proj proj = {});
      |                                                               ^
p1205.cpp:551:70: error: expected constructor, destructor, or type conversion before 'proj'
  551 |     ranges::unique_copy(I first, S last, O result, C comp = {}, Proj proj = {});
      |                                                                      ^~~~
p1205.cpp:551:79: error: expected unqualified-id before ')' token
  551 |     ranges::unique_copy(I first, S last, O result, C comp = {}, Proj proj = {});
      |                                                                               ^
p1205.cpp:552:10: error: 'input_range' has not been declared
  552 | template<input_range R, weakly_incrementable O, class Proj = identity,
      |          ^~~~~~~~~~~
p1205.cpp:552:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:552:25: error: 'weakly_incrementable' has not been declared
  552 | template<input_range R, weakly_incrementable O, class Proj = identity,
      |                         ^~~~~~~~~~~~~~~~~~~~
p1205.cpp:552:62: error: 'identity' does not name a type
  552 | template<input_range R, weakly_incrementable O, class Proj = identity,
      |                                                              ^~~~~~~~
p1205.cpp:568:3: error: expected 'class' or 'typename' before 'constexpr'
  568 |   constexpr void reverse(BidirectionalIterator first, BidirectionalIterator last);
      |   ^~~~~~~~~
p1205.cpp:568:13: error: expected '>' before 'void'
  568 |   constexpr void reverse(BidirectionalIterator first, BidirectionalIterator last);
      |             ^~~~
p1205.cpp:568:82: error: expected unqualified-id before ';' token
  568 |   constexpr void reverse(BidirectionalIterator first, BidirectionalIterator last);
      |                                                                                  ^
p1205.cpp:570:31: error: expected ',' or '...' before '&&' token
  570 |   void reverse(ExecutionPolicy&& exec,
      |                               ^~
p1205.cpp:572:10: error: 'bidirectional_iterator' has not been declared
  572 | template<bidirectional_iterator I, sentinel_for<I> S>
      |          ^~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:572:36: error: 'sentinel_for' has not been declared
  572 | template<bidirectional_iterator I, sentinel_for<I> S>
      |                                    ^~~~~~~~~~~~
p1205.cpp:572:48: error: expected '>' before '<' token
  572 | template<bidirectional_iterator I, sentinel_for<I> S>
      |                                                ^
p1205.cpp:573:3: error: 'requires' does not name a type
  573 |   requires permutable<I>
      |   ^~~~~~~~
p1205.cpp:573:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:575:10: error: 'bidirectional_range' has not been declared
  575 | template<bidirectional_range R>
      |          ^~~~~~~~~~~~~~~~~~~
p1205.cpp:575:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:576:3: error: 'requires' does not name a type
  576 |   requires permutable<iterator_t<R>>
      |   ^~~~~~~~
p1205.cpp:576:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:579:3: error: 'constexpr' does not name a type
  579 |   constexpr OutputIterator
      |   ^~~~~~~~~
p1205.cpp:579:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:584:33: error: expected ',' or '...' before '&&' token
  584 |     reverse_copy(ExecutionPolicy&& exec,
      |                                 ^~
p1205.cpp:587:10: error: 'bidirectional_iterator' has not been declared
  587 | template<bidirectional_iterator I, sentinel_for<I> S, weakly_incrementable O>
      |          ^~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:587:36: error: 'sentinel_for' has not been declared
  587 | template<bidirectional_iterator I, sentinel_for<I> S, weakly_incrementable O>
      |                                    ^~~~~~~~~~~~
p1205.cpp:587:48: error: expected '>' before '<' token
  587 | template<bidirectional_iterator I, sentinel_for<I> S, weakly_incrementable O>
      |                                                ^
p1205.cpp:588:3: error: 'requires' does not name a type
  588 |   requires indirectly_copyable<I, O>
      |   ^~~~~~~~
p1205.cpp:588:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:591:10: error: 'bidirectional_range' has not been declared
  591 | template<bidirectional_range R, weakly_incrementable O>
      |          ^~~~~~~~~~~~~~~~~~~
p1205.cpp:591:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:591:33: error: 'weakly_incrementable' has not been declared
  591 | template<bidirectional_range R, weakly_incrementable O>
      |                                 ^~~~~~~~~~~~~~~~~~~~
p1205.cpp:592:3: error: 'requires' does not name a type
  592 |   requires indirectly_copyable<iterator_t<R>, O>
      |   ^~~~~~~~
p1205.cpp:592:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:609:3: error: 'constexpr' does not name a type
  609 |   constexpr ForwardIterator
      |   ^~~~~~~~~
p1205.cpp:609:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:613:27: error: expected ',' or '...' before '&&' token
  613 |     rotate(ExecutionPolicy&& exec,
      |                           ^~
p1205.cpp:615:10: error: 'permutable' has not been declared
  615 | template<permutable I, sentinel_for<I> S>
      |          ^~~~~~~~~~
p1205.cpp:615:24: error: 'sentinel_for' has not been declared
  615 | template<permutable I, sentinel_for<I> S>
      |                        ^~~~~~~~~~~~
p1205.cpp:615:36: error: expected '>' before '<' token
  615 | template<permutable I, sentinel_for<I> S>
      |                                    ^
p1205.cpp:616:3: error: 'constexpr' does not name a type
  616 |   constexpr subrange<I> ranges::rotate(I first, I middle, S last);
      |   ^~~~~~~~~
p1205.cpp:616:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:617:10: error: 'forward_range' has not been declared
  617 | template<forward_range R>
      |          ^~~~~~~~~~~~~
p1205.cpp:617:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:618:3: error: 'requires' does not name a type
  618 |   requires permutable<iterator_t<R>>
      |   ^~~~~~~~
p1205.cpp:618:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:622:3: error: 'constexpr' does not name a type
  622 |   constexpr OutputIterator
      |   ^~~~~~~~~
p1205.cpp:622:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:627:32: error: expected ',' or '...' before '&&' token
  627 |     rotate_copy(ExecutionPolicy&& exec,
      |                                ^~
p1205.cpp:630:12: error: 'forward_iterator' has not been declared
  630 |   template<forward_iterator I, sentinel_for<I> S, weakly_incrementable O>
      |            ^~~~~~~~~~~~~~~~
p1205.cpp:630:32: error: 'sentinel_for' has not been declared
  630 |   template<forward_iterator I, sentinel_for<I> S, weakly_incrementable O>
      |                                ^~~~~~~~~~~~
p1205.cpp:630:44: error: expected '>' before '<' token
  630 |   template<forward_iterator I, sentinel_for<I> S, weakly_incrementable O>
      |                                            ^
p1205.cpp:631:5: error: 'requires' does not name a type
  631 |     requires indirectly_copyable<I, O>
      |     ^~~~~~~~
p1205.cpp:631:5: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:640:10: error: 'indirectly_copyable' does not name a type
  640 |          indirectly_copyable<iterator_t<R>, O> &&
      |          ^~~~~~~~~~~~~~~~~~~
p1205.cpp:653:10: error: 'forward_range' has not been declared
  653 | template<forward_range R, weakly_incrementable O>
      |          ^~~~~~~~~~~~~
p1205.cpp:653:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:653:27: error: 'weakly_incrementable' has not been declared
  653 | template<forward_range R, weakly_incrementable O>
      |                           ^~~~~~~~~~~~~~~~~~~~
p1205.cpp:654:3: error: 'requires' does not name a type
  654 |   requires indirectly_copyable<iterator_t<R>, O>
      |   ^~~~~~~~
p1205.cpp:654:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:658:1: error: expected unqualified-id before 'return'
  658 | return ranges::rotate_copy(ranges::begin(r), middle, ranges::end(r), result);
      | ^~~~~~
p1205.cpp:664:50: error: expected ',' or '...' before '&&' token
  664 |                         UniformRandomBitGenerator&& g);
      |                                                  ^~
p1205.cpp:665:10: error: 'input_iterator' has not been declared
  665 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O, class Gen>
      |          ^~~~~~~~~~~~~~
p1205.cpp:665:28: error: 'sentinel_for' has not been declared
  665 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O, class Gen>
      |                            ^~~~~~~~~~~~
p1205.cpp:665:40: error: expected '>' before '<' token
  665 | template<input_iterator I, sentinel_for<I> S, weakly_incrementable O, class Gen>
      |                                        ^
p1205.cpp:666:12: error: expected constructor, destructor, or type conversion before '(' token
  666 |   requires (forward_iterator<I> || random_access_iterator<O>) &&
      |            ^
p1205.cpp:670:10: error: 'input_range' has not been declared
  670 | template<input_range R, weakly_incrementable O, class Gen>
      |          ^~~~~~~~~~~
p1205.cpp:670:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:670:25: error: 'weakly_incrementable' has not been declared
  670 | template<input_range R, weakly_incrementable O, class Gen>
      |                         ^~~~~~~~~~~~~~~~~~~~
p1205.cpp:671:12: error: expected constructor, destructor, or type conversion before '(' token
  671 |   requires (forward_range<R> || random_access_iterator<O>) &&
      |            ^
p1205.cpp:685:41: error: expected ',' or '...' before '&&' token
  685 |                UniformRandomBitGenerator&& g);
      |                                         ^~
p1205.cpp:686:10: error: 'random_access_iterator' has not been declared
  686 | template<random_access_iterator I, sentinel_for<I> S, class Gen>
      |          ^~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:686:36: error: 'sentinel_for' has not been declared
  686 | template<random_access_iterator I, sentinel_for<I> S, class Gen>
      |                                    ^~~~~~~~~~~~
p1205.cpp:686:48: error: expected '>' before '<' token
  686 | template<random_access_iterator I, sentinel_for<I> S, class Gen>
      |                                                ^
p1205.cpp:687:3: error: 'requires' does not name a type
  687 |   requires permutable<I> &&
      |   ^~~~~~~~
p1205.cpp:687:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:690:10: error: 'random_access_range' has not been declared
  690 | template<random_access_range R, class Gen>
      |          ^~~~~~~~~~~~~~~~~~~
p1205.cpp:690:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:691:3: error: 'requires' does not name a type
  691 |   requires permutable<iterator_t<R>> &&
      |   ^~~~~~~~
p1205.cpp:691:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:704:31: error: expected ',' or '...' before '&&' token
  704 |     shift_left(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last,
      |                               ^~
p1205.cpp:706:10: error: 'permutable' has not been declared
  706 | template<permutable I, sentinel_for<I> S>
      |          ^~~~~~~~~~
p1205.cpp:706:24: error: 'sentinel_for' has not been declared
  706 | template<permutable I, sentinel_for<I> S>
      |                        ^~~~~~~~~~~~
p1205.cpp:706:36: error: expected '>' before '<' token
  706 | template<permutable I, sentinel_for<I> S>
      |                                    ^
p1205.cpp:707:3: error: 'constexpr' does not name a type
  707 |   constexpr subrange<I> ranges::shift_left(I first, S last, iter_difference_t<I> n);
      |   ^~~~~~~~~
p1205.cpp:707:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:708:10: error: 'forward_range' has not been declared
  708 | template<forward_range R>
      |          ^~~~~~~~~~~~~
p1205.cpp:708:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:709:3: error: 'requires' does not name a type
  709 |   requires permutable<iterator_t<R>>
      |   ^~~~~~~~
p1205.cpp:709:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1205.cpp:721:32: error: expected ',' or '...' before '&&' token
  721 |     shift_right(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last,
      |                                ^~
p1205.cpp:723:10: error: 'permutable' has not been declared
  723 | template<permutable I, sentinel_for<I> S>
      |          ^~~~~~~~~~
p1205.cpp:723:24: error: 'sentinel_for' has not been declared
  723 | template<permutable I, sentinel_for<I> S>
      |                        ^~~~~~~~~~~~
p1205.cpp:723:36: error: expected '>' before '<' token
  723 | template<permutable I, sentinel_for<I> S>
      |                                    ^
p1205.cpp:724:3: error: 'constexpr' does not name a type
  724 |   constexpr subrange<I> ranges::shift_right(I first, S last, iter_difference_t<I> n);
      |   ^~~~~~~~~
p1205.cpp:724:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1205.cpp:725:10: error: 'forward_range' has not been declared
  725 | template<forward_range R>
      |          ^~~~~~~~~~~~~
p1205.cpp:725:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:726:3: error: 'requires' does not name a type
  726 |   requires permutable<iterator_t<R>>
      |   ^~~~~~~~
p1205.cpp:726:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'

$ g++ p1205.cpp -std=2b -o p1205g -I. -Wall
p1205.cpp:21:77: error: 'std::ranges::copy_result<_Iter, _Out> std::ranges::copy(I, S, O)' should have been declared inside 'std::ranges'
   21 |   constexpr ranges::copy_result<I, O> ranges::copy(I first, S last, O result);
      |                                                                             ^
p1205.cpp:21:77: error: 'template<class I, class S, class O>  requires (input_iterator<I>) && (sentinel_for<S, I>) && (weakly_incrementable<O>) && (indirectly_copyable<I, O>) constexpr std::ranges::copy_result<_Iter, _Out> std::ranges::copy(I, S, O)' redeclared as different kind of entity
In file included from /usr/local/include/c++/12.1.0/bits/ranges_uninitialized.h:36,
                 from /usr/local/include/c++/12.1.0/memory:86,
                 from N4910.h:14,
                 from p1205.cpp:10:
/usr/local/include/c++/12.1.0/bits/ranges_algobase.h:319:30: note: previous declaration 'constexpr const std::ranges::__copy_fn std::ranges::copy'
  319 |   inline constexpr __copy_fn copy{};
      |                              ^~~~
p1205.cpp:22:10: error: 'input_range' has not been declared
   22 | template<input_range R, weakly_incrementable O>
      |          ^~~~~~~~~~~
p1205.cpp:22:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:23:32: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
   23 |   requires indirectly_copyable<iterator_t<R>, O>
      |                                ^~~~~~~~~~
      |                                std::ranges::iterator_t
In file included from /usr/local/include/c++/12.1.0/string_view:50,
                 from /usr/local/include/c++/12.1.0/bits/basic_string.h:48,
                 from /usr/local/include/c++/12.1.0/string:53,
                 from /usr/local/include/c++/12.1.0/bits/locale_classes.h:40,
                 from /usr/local/include/c++/12.1.0/bits/ios_base.h:41,
                 from /usr/local/include/c++/12.1.0/ios:42,
                 from /usr/local/include/c++/12.1.0/ostream:38,
                 from /usr/local/include/c++/12.1.0/iostream:39,
                 from N4910.h:2:
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:23:12: error: parse error in template argument list
   23 |   requires indirectly_copyable<iterator_t<R>, O>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:23:12: error: wrong number of template arguments (1, should be 2)
In file included from /usr/local/include/c++/12.1.0/bits/stl_iterator_base_types.h:71,
                 from /usr/local/include/c++/12.1.0/bits/stl_construct.h:61,
                 from /usr/local/include/c++/12.1.0/bits/char_traits.h:46,
                 from /usr/local/include/c++/12.1.0/ios:40:
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:785:13: note: provided for 'template<class _In, class _Out> concept std::indirectly_copyable'
  785 |     concept indirectly_copyable = indirectly_readable<_In>
      |             ^~~~~~~~~~~~~~~~~~~
p1205.cpp:23:45: error: expected unqualified-id before ',' token
   23 |   requires indirectly_copyable<iterator_t<R>, O>
      |                                             ^
p1205.cpp:38:11: error: found ':' in nested-name-specifier, expected '::'
   38 | Complexity: Exactly last - first assignments.
      |           ^
      |           ::
p1205.cpp:38:1: error: 'Complexity' does not name a type
   38 | Complexity: Exactly last - first assignments.
      | ^~~~~~~~~~
p1205.cpp:51:43: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
   51 |        indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |                                           ^~~~~~~~~~
      |                                           std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:51:55: error: wrong number of template arguments (1, should be 2)
   51 |        indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |                                                       ^
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:757:12: note: provided for 'template<class _Iter, class _Proj>  requires (indirectly_readable<_Iter>) && (indirectly_regular_unary_invocable<_Proj, _Iter>) struct std::projected'
  757 |     struct projected
      |            ^~~~~~~~~
p1205.cpp:51:58: error: 'Proj' was not declared in this scope
   51 |        indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |                                                          ^~~~
p1205.cpp:51:8: error: template argument 1 is invalid
   51 |        indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:51:8: error: template argument 2 is invalid
p1205.cpp:54:61: error: expected unqualified-id before ')' token
   54 |   ranges::copy_if(R&& r, O result, Pred pred, Proj proj = {});
      |                                                             ^
p1205.cpp:63:1: error: expected unqualified-id before 'requires'
   63 | requires indirectly_copyable<iterator_t<R>, I>
      | ^~~~~~~~
p1205.cpp:80:21: error: 'copy_if_result' in namespace 'std::ranges' does not name a template type; did you mean 'copy_n_result'?
   80 |   constexpr ranges::copy_if_result<I, O>
      |                     ^~~~~~~~~~~~~~
      |                     copy_n_result
p1205.cpp:81:73: error: expected unqualified-id before ')' token
   81 |     ranges::copy_if(I first, S last, O result, Pred pred, Proj proj = {});
      |                                                                         ^
p1205.cpp:82:10: error: 'input_range' has not been declared
   82 | template<input_range R, weakly_incrementable O, class Proj = identity,
      |          ^~~~~~~~~~~
p1205.cpp:82:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:84:3: error: expected 'class' or 'typename' before 'constexpr'
   84 |   constexpr BidirectionalIterator2
      |   ^~~~~~~~~
p1205.cpp:84:3: error: expected identifier before 'constexpr'
p1205.cpp:84:3: error: expected '>' before 'constexpr'
p1205.cpp:87:49: error: expected unqualified-id before ';' token
   87 |                   BidirectionalIterator2 result);
      |                                                 ^
p1205.cpp:91:55: error: 'std::ranges::copy_backward_result<_Iter1, _Iter2> std::ranges::copy_backward(I1, S1, I2)' should have been declared inside 'std::ranges'
   91 |     ranges::copy_backward(I1 first, S1 last, I2 result);
      |                                                       ^
p1205.cpp:91:55: error: 'template<class I1, class S1, class I2>  requires (bidirectional_iterator<I1>) && (sentinel_for<S1, I1>) && (bidirectional_iterator<I2>) && (indirectly_copyable<I1, I2>) constexpr std::ranges::copy_backward_result<_Iter1, _Iter2> std::ranges::copy_backward(I1, S1, I2)' redeclared as different kind of entity
/usr/local/include/c++/12.1.0/bits/ranges_algobase.h:460:39: note: previous declaration 'constexpr const std::ranges::__copy_backward_fn std::ranges::copy_backward'
  460 |   inline constexpr __copy_backward_fn copy_backward{};
      |                                       ^~~~~~~~~~~~~
p1205.cpp:92:10: error: 'bidirectional_range' has not been declared
   92 | template<bidirectional_range R, bidirectional_iterator I>
      |          ^~~~~~~~~~~~~~~~~~~
p1205.cpp:92:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:99:28: error: too many template-parameter-lists
   99 |   constexpr OutputIterator move(InputIterator first, InputIterator last,
      |                            ^~~~
p1205.cpp:104:43: error: 'std::ranges::move_result<_Iter, _Out> std::ranges::move(I, S, O)' should have been declared inside 'std::ranges'
  104 |     ranges::move(I first, S last, O result);
      |                                           ^
p1205.cpp:104:43: error: 'template<class I, class S, class O>  requires (input_iterator<I>) && (sentinel_for<S, I>) && (weakly_incrementable<O>) && (indirectly_movable<I, O>) constexpr std::ranges::move_result<_Iter, _Out> std::ranges::move(I, S, O)' redeclared as different kind of entity
/usr/local/include/c++/12.1.0/bits/ranges_algobase.h:344:30: note: previous declaration 'constexpr const std::ranges::__move_fn std::ranges::move'
  344 |   inline constexpr __move_fn move{};
      |                              ^~~~
p1205.cpp:105:10: error: 'input_range' has not been declared
  105 | template<input_range R, weakly_incrementable O>
      |          ^~~~~~~~~~~
p1205.cpp:105:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:106:31: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  106 |   requires indirectly_movable<iterator_t<R>, O>
      |                               ^~~~~~~~~~
      |                               std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:106:12: error: parse error in template argument list
  106 |   requires indirectly_movable<iterator_t<R>, O>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:106:12: error: wrong number of template arguments (1, should be 2)
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:773:13: note: provided for 'template<class _In, class _Out> concept std::indirectly_movable'
  773 |     concept indirectly_movable = indirectly_readable<_In>
      |             ^~~~~~~~~~~~~~~~~~
p1205.cpp:106:44: error: expected unqualified-id before ',' token
  106 |   requires indirectly_movable<iterator_t<R>, O>
      |                                            ^
p1205.cpp:133:55: error: 'std::ranges::move_backward_result<_Iter1, _Iter2> std::ranges::move_backward(I1, S1, I2)' should have been declared inside 'std::ranges'
  133 |     ranges::move_backward(I1 first, S1 last, I2 result);
      |                                                       ^
p1205.cpp:133:55: error: 'template<class I1, class S1, class I2>  requires (bidirectional_iterator<I1>) && (sentinel_for<S1, I1>) && (bidirectional_iterator<I2>) && (indirectly_movable<I1, I2>) constexpr std::ranges::move_backward_result<_Iter1, _Iter2> std::ranges::move_backward(I1, S1, I2)' redeclared as different kind of entity
/usr/local/include/c++/12.1.0/bits/ranges_algobase.h:485:39: note: previous declaration 'constexpr const std::ranges::__move_backward_fn std::ranges::move_backward'
  485 |   inline constexpr __move_backward_fn move_backward{};
      |                                       ^~~~~~~~~~~~~
p1205.cpp:134:10: error: 'bidirectional_range' has not been declared
  134 | template<bidirectional_range R, bidirectional_iterator I>
      |          ^~~~~~~~~~~~~~~~~~~
p1205.cpp:134:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:135:31: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  135 |   requires indirectly_movable<iterator_t<R>, I>
      |                               ^~~~~~~~~~
      |                               std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:135:12: error: parse error in template argument list
  135 |   requires indirectly_movable<iterator_t<R>, I>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:135:12: error: wrong number of template arguments (1, should be 2)
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:773:13: note: provided for 'template<class _In, class _Out> concept std::indirectly_movable'
  773 |     concept indirectly_movable = indirectly_readable<_In>
      |             ^~~~~~~~~~~~~~~~~~
p1205.cpp:135:44: error: expected unqualified-id before ',' token
  135 |   requires indirectly_movable<iterator_t<R>, I>
      |                                            ^
p1205.cpp:143:1: error: expected unqualified-id before 'requires'
  143 | requires indirectly_swappable<iterator_t<R1>, iterator_t<R2>>
      | ^~~~~~~~
p1205.cpp:170:21: error: 'swap_ranges_result' in namespace 'std::ranges' does not name a template type
  170 |   constexpr ranges::swap_ranges_result<I1, I2>
      |                     ^~~~~~~~~~~~~~~~~~
p1205.cpp:172:10: error: 'input_range' has not been declared
  172 | template<input_range R1, input_range R2>
      |          ^~~~~~~~~~~
p1205.cpp:172:26: error: 'input_range' has not been declared
  172 | template<input_range R1, input_range R2>
      |                          ^~~~~~~~~~~
p1205.cpp:173:30: error: 'O' was not declared in this scope
  173 | requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R1>, Proj1>,
      |                              ^
p1205.cpp:173:51: error: 'F' was not declared in this scope
  173 | requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R1>, Proj1>,
      |                                                   ^
p1205.cpp:173:76: error: 'R1' was not declared in this scope; did you mean 'y1'?
  173 | requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R1>, Proj1>,
      |                                                                            ^~
      |                                                                            y1
p1205.cpp:173:76: error: 'R1' was not declared in this scope; did you mean 'y1'?
  173 | requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R1>, Proj1>,
      |                                                                            ^~
      |                                                                            y1
p1205.cpp:173:76: error: 'R1' was not declared in this scope; did you mean 'y1'?
  173 | requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R1>, Proj1>,
      |                                                                            ^~
      |                                                                            y1
p1205.cpp:173:76: error: 'R1' was not declared in this scope; did you mean 'y1'?
  173 | requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R1>, Proj1>,
      |                                                                            ^~
      |                                                                            y1
p1205.cpp:173:76: error: 'R1' was not declared in this scope; did you mean 'y1'?
  173 | requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R1>, Proj1>,
      |                                                                            ^~
      |                                                                            y1
p1205.cpp:173:76: error: 'R1' was not declared in this scope; did you mean 'y1'?
  173 | requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R1>, Proj1>,
      |                                                                            ^~
      |                                                                            y1
p1205.cpp:173:76: error: 'R1' was not declared in this scope; did you mean 'y1'?
  173 | requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R1>, Proj1>,
      |                                                                            ^~
      |                                                                            y1
p1205.cpp:173:76: error: 'R1' was not declared in this scope; did you mean 'y1'?
  173 | requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R1>, Proj1>,
      |                                                                            ^~
      |                                                                            y1
p1205.cpp:173:76: error: 'R1' was not declared in this scope; did you mean 'y1'?
  173 | requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R1>, Proj1>,
      |                                                                            ^~
      |                                                                            y1
p1205.cpp:173:76: error: 'R1' was not declared in this scope; did you mean 'y1'?
  173 | requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R1>, Proj1>,
      |                                                                            ^~
      |                                                                            y1
p1205.cpp:173:76: error: 'R1' was not declared in this scope; did you mean 'y1'?
  173 | requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R1>, Proj1>,
      |                                                                            ^~
      |                                                                            y1
p1205.cpp:173:65: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  173 | requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R1>, Proj1>,
      |                                                                 ^~~~~~~~~~
      |                                                                 std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:173:76: error: 'R1' was not declared in this scope; did you mean 'y1'?
  173 | requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R1>, Proj1>,
      |                                                                            ^~
      |                                                                            y1
p1205.cpp:173:78: error: wrong number of template arguments (1, should be 2)
  173 | requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R1>, Proj1>,
      |                                                                              ^
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:757:12: note: provided for 'template<class _Iter, class _Proj>  requires (indirectly_readable<_Iter>) && (indirectly_regular_unary_invocable<_Proj, _Iter>) struct std::projected'
  757 |     struct projected
      |            ^~~~~~~~~
p1205.cpp:173:81: error: 'Proj1' was not declared in this scope
  173 | requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R1>, Proj1>,
      |                                                                                 ^~~~~
p1205.cpp:173:86: error: template argument 1 is invalid
  173 | requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R1>, Proj1>,
      |                                                                                      ^
p1205.cpp:173:86: error: template argument 2 is invalid
p1205.cpp:173:86: error: template argument 3 is invalid
p1205.cpp:174:61: error: 'R2' was not declared in this scope; did you mean 'R'?
  174 |                                        projected<iterator_t<R2>, Proj2>>>
      |                                                             ^~
      |                                                             R
p1205.cpp:174:61: error: 'R2' was not declared in this scope; did you mean 'R'?
  174 |                                        projected<iterator_t<R2>, Proj2>>>
      |                                                             ^~
      |                                                             R
p1205.cpp:174:61: error: 'R2' was not declared in this scope; did you mean 'R'?
  174 |                                        projected<iterator_t<R2>, Proj2>>>
      |                                                             ^~
      |                                                             R
p1205.cpp:174:61: error: 'R2' was not declared in this scope; did you mean 'R'?
  174 |                                        projected<iterator_t<R2>, Proj2>>>
      |                                                             ^~
      |                                                             R
p1205.cpp:174:61: error: 'R2' was not declared in this scope; did you mean 'R'?
  174 |                                        projected<iterator_t<R2>, Proj2>>>
      |                                                             ^~
      |                                                             R
p1205.cpp:174:61: error: 'R2' was not declared in this scope; did you mean 'R'?
  174 |                                        projected<iterator_t<R2>, Proj2>>>
      |                                                             ^~
      |                                                             R
p1205.cpp:174:61: error: 'R2' was not declared in this scope; did you mean 'R'?
  174 |                                        projected<iterator_t<R2>, Proj2>>>
      |                                                             ^~
      |                                                             R
p1205.cpp:174:61: error: 'R2' was not declared in this scope; did you mean 'R'?
  174 |                                        projected<iterator_t<R2>, Proj2>>>
      |                                                             ^~
      |                                                             R
p1205.cpp:174:61: error: 'R2' was not declared in this scope; did you mean 'R'?
  174 |                                        projected<iterator_t<R2>, Proj2>>>
      |                                                             ^~
      |                                                             R
p1205.cpp:174:61: error: 'R2' was not declared in this scope; did you mean 'R'?
  174 |                                        projected<iterator_t<R2>, Proj2>>>
      |                                                             ^~
      |                                                             R
p1205.cpp:174:61: error: 'R2' was not declared in this scope; did you mean 'R'?
  174 |                                        projected<iterator_t<R2>, Proj2>>>
      |                                                             ^~
      |                                                             R
p1205.cpp:174:50: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  174 |                                        projected<iterator_t<R2>, Proj2>>>
      |                                                  ^~~~~~~~~~
      |                                                  std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:174:61: error: 'R2' was not declared in this scope; did you mean 'R'?
  174 |                                        projected<iterator_t<R2>, Proj2>>>
      |                                                             ^~
      |                                                             R
p1205.cpp:174:63: error: wrong number of template arguments (1, should be 2)
  174 |                                        projected<iterator_t<R2>, Proj2>>>
      |                                                               ^
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:757:12: note: provided for 'template<class _Iter, class _Proj>  requires (indirectly_readable<_Iter>) && (indirectly_regular_unary_invocable<_Proj, _Iter>) struct std::projected'
  757 |     struct projected
      |            ^~~~~~~~~
p1205.cpp:174:66: error: 'Proj2' was not declared in this scope
  174 |                                        projected<iterator_t<R2>, Proj2>>>
      |                                                                  ^~~~~
p1205.cpp:173:10: error: wrong number of template arguments (4, should be 2)
  173 | requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R1>, Proj1>,
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  174 |                                        projected<iterator_t<R2>, Proj2>>>
      |                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:542:13: note: provided for 'template<class _Out, class _Tp> concept std::indirectly_writable'
  542 |     concept indirectly_writable = requires(_Out&& __o, _Tp&& __t)
      |             ^~~~~~~~~~~~~~~~~~~
p1205.cpp:174:71: error: expected unqualified-id before '>' token
  174 |                                        projected<iterator_t<R2>, Proj2>>>
      |                                                                       ^~
p1205.cpp:177:50: error: expected unqualified-id before ',' token
  177 |                     F binary_op, Proj1 proj1 = {}, Proj2 proj2 = {});
      |                                                  ^
p1205.cpp:177:58: error: expected constructor, destructor, or type conversion before 'proj2'
  177 |                     F binary_op, Proj1 proj1 = {}, Proj2 proj2 = {});
      |                                                          ^~~~~
p1205.cpp:177:68: error: expected unqualified-id before ')' token
  177 |                     F binary_op, Proj1 proj1 = {}, Proj2 proj2 = {});
      |                                                                    ^
p1205.cpp:210:21: error: 'unary_transform_result' in namespace 'std::ranges' does not name a template type
  210 |   constexpr ranges::unary_transform_result<I, O>
      |                     ^~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:211:72: error: expected unqualified-id before ')' token
  211 |     ranges::transform(I first1, S last1, O result, F op, Proj proj = {});
      |                                                                        ^
p1205.cpp:212:10: error: 'input_range' has not been declared
  212 | template<input_range R, weakly_incrementable O, copy_constructible F,
      |          ^~~~~~~~~~~
p1205.cpp:212:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:214:67: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  214 |   requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R>, Proj>>>
      |                                                                   ^~~~~~~~~~
      |                                                                   std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:214:79: error: wrong number of template arguments (1, should be 2)
  214 |   requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R>, Proj>>>
      |                                                                               ^
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:757:12: note: provided for 'template<class _Iter, class _Proj>  requires (indirectly_readable<_Iter>) && (indirectly_regular_unary_invocable<_Proj, _Iter>) struct std::projected'
  757 |     struct projected
      |            ^~~~~~~~~
p1205.cpp:214:82: error: template argument 2 is invalid
  214 |   requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R>, Proj>>>
      |                                                                                  ^~~~
p1205.cpp:214:12: error: template argument 2 is invalid
  214 |   requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R>, Proj>>>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:214:88: error: expected unqualified-id before '>' token
  214 |   requires indirectly_writable<O, indirect_result_t<F&, projected<iterator_t<R>, Proj>>>
      |                                                                                        ^
p1205.cpp:216:60: error: expected unqualified-id before ')' token
  216 |     ranges::transform(R&& r, O result, F op, Proj proj = {});
      |                                                            ^
p1205.cpp:222:21: error: 'binary_transform_result' in namespace 'std::ranges' does not name a template type
  222 |   constexpr ranges::binary_transform_result<I1, I2, O>
      |                     ^~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:224:52: error: expected unqualified-id before ',' token
  224 |                       F binary_op, Proj1 proj1 = {}, Proj2 proj2 = {});
      |                                                    ^
p1205.cpp:224:60: error: expected constructor, destructor, or type conversion before 'proj2'
  224 |                       F binary_op, Proj1 proj1 = {}, Proj2 proj2 = {});
      |                                                            ^~~~~
p1205.cpp:224:70: error: expected unqualified-id before ')' token
  224 |                       F binary_op, Proj1 proj1 = {}, Proj2 proj2 = {});
      |                                                                      ^
p1205.cpp:225:10: error: 'input_range' has not been declared
  225 | template<input_range R1, input_range R2, weakly_incrementable O,
      |          ^~~~~~~~~~~
p1205.cpp:225:26: error: 'input_range' has not been declared
  225 | template<input_range R1, input_range R2, weakly_incrementable O,
      |                          ^~~~~~~~~~~
p1205.cpp:244:18: error: too many template-parameter-lists
  244 |   constexpr void replace(ForwardIterator first, ForwardIterator last,
      |                  ^~~~~~~
p1205.cpp:261:94: error: 'I std::ranges::replace(I, S, const T1&, const T2&, Proj)' should have been declared inside 'std::ranges'
  261 |     ranges::replace(I first, S last, const T1& old_value, const T2& new_value, Proj proj = {});
      |                                                                                              ^
p1205.cpp:262:10: error: 'input_range' has not been declared
  262 | template<input_range R, class T1, class T2, class Proj = identity>
      |          ^~~~~~~~~~~
p1205.cpp:262:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:263:32: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  263 |   requires indirectly_writable<iterator_t<R>, const T2&> &&
      |                                ^~~~~~~~~~
      |                                std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:263:12: error: parse error in template argument list
  263 |   requires indirectly_writable<iterator_t<R>, const T2&> &&
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:263:12: error: wrong number of template arguments (1, should be 2)
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:542:13: note: provided for 'template<class _Out, class _Tp> concept std::indirectly_writable'
  542 |     concept indirectly_writable = requires(_Out&& __o, _Tp&& __t)
      |             ^~~~~~~~~~~~~~~~~~~
p1205.cpp:263:45: error: expected unqualified-id before ',' token
  263 |   requires indirectly_writable<iterator_t<R>, const T2&> &&
      |                                             ^
p1205.cpp:266:84: error: expected unqualified-id before ')' token
  266 |     ranges::replace(R&& r, const T1& old_value, const T2& new_value, Proj proj = {});
      |                                                                                    ^
p1205.cpp:270:96: error: 'I std::ranges::replace_if(I, S, Pred, const T&, Proj)' should have been declared inside 'std::ranges'
  270 |   constexpr I ranges::replace_if(I first, S last, Pred pred, const T& new_value, Proj proj = {});
      |                                                                                                ^
p1205.cpp:271:10: error: 'input_range' has not been declared
  271 | template<input_range R, class T, class Proj = identity,
      |          ^~~~~~~~~~~
p1205.cpp:271:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:272:45: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  272 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |                                             ^~~~~~~~~~
      |                                             std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:272:57: error: wrong number of template arguments (1, should be 2)
  272 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |                                                         ^
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:757:12: note: provided for 'template<class _Iter, class _Proj>  requires (indirectly_readable<_Iter>) && (indirectly_regular_unary_invocable<_Proj, _Iter>) struct std::projected'
  757 |     struct projected
      |            ^~~~~~~~~
p1205.cpp:272:10: error: wrong number of template arguments (3, should be 2)
  272 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:710:13: note: provided for 'template<class _Fn, class _Iter> concept std::indirect_unary_predicate'
  710 |     concept indirect_unary_predicate = indirectly_readable<_Iter>
      |             ^~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:272:67: error: 'Pred' does not name a type
  272 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |                                                                   ^~~~
p1205.cpp:275:76: error: expected unqualified-id before ')' token
  275 |     ranges::replace_if(R&& r, Pred pred, const T& new_value, Proj proj = {});
      |                                                                            ^
p1205.cpp:311:21: error: 'replace_copy_result' in namespace 'std::ranges' does not name a template type
  311 |   constexpr ranges::replace_copy_result<I, O>
      |                     ^~~~~~~~~~~~~~~~~~~
p1205.cpp:313:40: error: expected unqualified-id before ')' token
  313 |                          Proj proj = {});
      |                                        ^
p1205.cpp:314:10: error: 'input_range' has not been declared
  314 | template<input_range R, class T1, class T2, output_iterator<const T2&> O,
      |          ^~~~~~~~~~~
p1205.cpp:314:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:316:32: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  316 |   requires indirectly_copyable<iterator_t<R>, O> &&
      |                                ^~~~~~~~~~
      |                                std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:316:12: error: parse error in template argument list
  316 |   requires indirectly_copyable<iterator_t<R>, O> &&
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:316:12: error: wrong number of template arguments (1, should be 2)
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:785:13: note: provided for 'template<class _In, class _Out> concept std::indirectly_copyable'
  785 |     concept indirectly_copyable = indirectly_readable<_In>
      |             ^~~~~~~~~~~~~~~~~~~
p1205.cpp:316:45: error: expected unqualified-id before ',' token
  316 |   requires indirectly_copyable<iterator_t<R>, O> &&
      |                                             ^
p1205.cpp:320:40: error: expected unqualified-id before ')' token
  320 |                          Proj proj = {});
      |                                        ^
p1205.cpp:324:21: error: 'replace_copy_if_result' in namespace 'std::ranges' does not name a template type
  324 |   constexpr ranges::replace_copy_if_result<I, O>
      |                     ^~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:326:43: error: expected unqualified-id before ')' token
  326 |                             Proj proj = {});
      |                                           ^
p1205.cpp:327:10: error: 'input_range' has not been declared
  327 | template<input_range R, class T, output_iterator<const T&> O, class Proj = identity,
      |          ^~~~~~~~~~~
p1205.cpp:327:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:328:45: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  328 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |                                             ^~~~~~~~~~
      |                                             std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:328:57: error: wrong number of template arguments (1, should be 2)
  328 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |                                                         ^
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:757:12: note: provided for 'template<class _Iter, class _Proj>  requires (indirectly_readable<_Iter>) && (indirectly_regular_unary_invocable<_Proj, _Iter>) struct std::projected'
  757 |     struct projected
      |            ^~~~~~~~~
p1205.cpp:328:10: error: wrong number of template arguments (3, should be 2)
  328 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:710:13: note: provided for 'template<class _Fn, class _Iter> concept std::indirect_unary_predicate'
  710 |     concept indirect_unary_predicate = indirectly_readable<_Iter>
      |             ^~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:328:67: error: 'Pred' does not name a type
  328 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |                                                                   ^~~~
p1205.cpp:332:43: error: expected unqualified-id before ')' token
  332 |                             Proj proj = {});
      |                                           ^
p1205.cpp:358:59: error: 'O std::ranges::fill(O, S, const T&)' should have been declared inside 'std::range'
  358 |   constexpr O ranges::fill(O first, S last, const T& value);
      |                                                           ^
p1205.cpp:358:59: error: 'template<class T, class O, class S>  requires (output_iterator<O, const T&>) && (sentinel_for<S, O>) constexpr O std::ranges::fill(O, S, const T&)' redeclared as different kind of entity
/usr/local/include/c++/12.1.0/bits/ranges_algobase.h:596:30: note: previous declaration 'constexpr const std::ranges::__fill_fn std::ranges::fill'
  596 |   inline constexpr __fill_fn fill{};
      |                              ^~~~
p1205.cpp:359:19: error: 'output_range' has not been declared
  359 | template<class T, output_range<const T&> R>
      |                   ^~~~~~~~~~~~
p1205.cpp:359:31: error: expected '>' before '<' token
  359 | template<class T, output_range<const T&> R>
      |                               ^
p1205.cpp:360:13: error: 'borrowed_iterator_t' does not name a type
  360 |   constexpr borrowed_iterator_t<R> ranges::fill(R&& r, const T& value);
      |             ^~~~~~~~~~~~~~~~~~~
p1205.cpp:362:77: error: 'O std::ranges::fill_n(O, std::iter_difference_t<_Iter>, const T&)' should have been declared inside 'std::ranges'
  362 |   constexpr O ranges::fill_n(O first, iter_difference_t<O> n, const T& value);
      |                                                                             ^
p1205.cpp:362:77: error: 'template<class T, class O>  requires  output_iterator<O, const T&> constexpr O std::ranges::fill_n(O, std::iter_difference_t<_Iter>, const T&)' redeclared as different kind of entity
/usr/local/include/c++/12.1.0/bits/ranges_algobase.h:557:32: note: previous declaration 'constexpr const std::ranges::__fill_n_fn std::ranges::fill_n'
  557 |   inline constexpr __fill_n_fn fill_n{};
      |                                ^~~~~~
p1205.cpp:378:54: error: 'O std::ranges::generate(O, S, F)' should have been declared inside 'std::ranges'
  378 |   constexpr O ranges::generate(O first, S last, F gen);
      |                                                      ^
p1205.cpp:14:11: error: expected identifier before 'int'
   14 | #define R int
      |           ^~~
p1205.cpp:379:16: note: in expansion of macro 'R'
  379 | template<class R, copy_constructible F>
      |                ^
p1205.cpp:379:10: error: two or more data types in declaration of 'parameter'
  379 | template<class R, copy_constructible F>
      |          ^~~~~
p1205.cpp:380:29: error: 'output_range' was not declared in this scope; did you mean 'std::ranges::output_range'?
  380 |   requires invocable<F&> && output_range<R, invoke_result_t<F&>>
      |                             ^~~~~~~~~~~~
      |                             std::ranges::output_range
/usr/local/include/c++/12.1.0/bits/ranges_base.h:656:13: note: 'std::ranges::output_range' declared here
  656 |     concept output_range
      |             ^~~~~~~~~~~~
p1205.cpp:380:26: error: expression must be enclosed in parentheses
  380 |   requires invocable<F&> && output_range<R, invoke_result_t<F&>>
      |                          ^~
p1205.cpp:380:29: error: 'output_range' does not name a type
  380 |   requires invocable<F&> && output_range<R, invoke_result_t<F&>>
      |                             ^~~~~~~~~~~~
p1205.cpp:384:72: error: 'O std::ranges::generate_n(O, std::iter_difference_t<_Iter>, F)' should have been declared inside 'std::ranges'
  384 |   constexpr O ranges::generate_n(O first, iter_difference_t<O> n, F gen);
      |                                                                        ^
p1205.cpp:406:13: error: 'subrange' does not name a type
  406 |   constexpr subrange<I> ranges::remove(I first, S last, const T& value, Proj proj = {});
      |             ^~~~~~~~
p1205.cpp:406:87: error: expected unqualified-id before ')' token
  406 |   constexpr subrange<I> ranges::remove(I first, S last, const T& value, Proj proj = {});
      |                                                                                       ^
p1205.cpp:407:10: error: 'forward_range' has not been declared
  407 | template<forward_range R, class T, class Proj = identity>
      |          ^~~~~~~~~~~~~
p1205.cpp:407:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:408:23: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  408 |   requires permutable<iterator_t<R>> &&
      |                       ^~~~~~~~~~
      |                       std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:408:12: error: parse error in template argument list
  408 |   requires permutable<iterator_t<R>> &&
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:408:12: error: template argument 1 is invalid
p1205.cpp:409:66: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  409 |            indirect_binary_predicate<ranges::equal_to, projected<iterator_t<R>, Proj>, const T*>
      |                                                                  ^~~~~~~~~~
      |                                                                  std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:409:78: error: wrong number of template arguments (1, should be 2)
  409 |            indirect_binary_predicate<ranges::equal_to, projected<iterator_t<R>, Proj>, const T*>
      |                                                                              ^
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:757:12: note: provided for 'template<class _Iter, class _Proj>  requires (indirectly_readable<_Iter>) && (indirectly_regular_unary_invocable<_Proj, _Iter>) struct std::projected'
  757 |     struct projected
      |            ^~~~~~~~~
p1205.cpp:409:12: error: template argument 2 is invalid
  409 |            indirect_binary_predicate<ranges::equal_to, projected<iterator_t<R>, Proj>, const T*>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:409:86: error: expected unqualified-id before ',' token
  409 |            indirect_binary_predicate<ranges::equal_to, projected<iterator_t<R>, Proj>, const T*>
      |                                                                                      ^
p1205.cpp:411:57: error: expected unqualified-id before ')' token
  411 |     ranges::remove(R&& r, const T& value, Proj proj = {});
      |                                                         ^
p1205.cpp:414:13: error: 'subrange' does not name a type
  414 |   constexpr subrange<I> ranges::remove_if(I first, S last, Pred pred, Proj proj = {});
      |             ^~~~~~~~
p1205.cpp:414:85: error: expected unqualified-id before ')' token
  414 |   constexpr subrange<I> ranges::remove_if(I first, S last, Pred pred, Proj proj = {});
      |                                                                                     ^
p1205.cpp:415:10: error: 'forward_range' has not been declared
  415 | template<forward_range R, class Proj = identity,
      |          ^~~~~~~~~~~~~
p1205.cpp:415:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:416:45: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  416 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |                                             ^~~~~~~~~~
      |                                             std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:416:57: error: wrong number of template arguments (1, should be 2)
  416 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |                                                         ^
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:757:12: note: provided for 'template<class _Iter, class _Proj>  requires (indirectly_readable<_Iter>) && (indirectly_regular_unary_invocable<_Proj, _Iter>) struct std::projected'
  757 |     struct projected
      |            ^~~~~~~~~
p1205.cpp:416:10: error: wrong number of template arguments (3, should be 2)
  416 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:710:13: note: provided for 'template<class _Fn, class _Iter> concept std::indirect_unary_predicate'
  710 |     concept indirect_unary_predicate = indirectly_readable<_Iter>
      |             ^~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:416:67: error: 'Pred' does not name a type
  416 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |                                                                   ^~~~
p1205.cpp:419:55: error: expected unqualified-id before ')' token
  419 |     ranges::remove_if(R&& r, Pred pred, Proj proj = {});
      |                                                       ^
p1205.cpp:456:21: error: 'remove_copy_result' in namespace 'std::ranges' does not name a template type
  456 |   constexpr ranges::remove_copy_result<I, O>
      |                     ^~~~~~~~~~~~~~~~~~
p1205.cpp:457:82: error: expected unqualified-id before ')' token
  457 |     ranges::remove_copy(I first, S last, O result, const T& value, Proj proj = {});
      |                                                                                  ^
p1205.cpp:458:10: error: 'input_range' has not been declared
  458 | template<input_range R, weakly_incrementable O, class T, class Proj = identity>
      |          ^~~~~~~~~~~
p1205.cpp:458:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:459:32: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  459 |   requires indirectly_copyable<iterator_t<R>, O> &&
      |                                ^~~~~~~~~~
      |                                std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:459:12: error: parse error in template argument list
  459 |   requires indirectly_copyable<iterator_t<R>, O> &&
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:459:12: error: wrong number of template arguments (1, should be 2)
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:785:13: note: provided for 'template<class _In, class _Out> concept std::indirectly_copyable'
  785 |     concept indirectly_copyable = indirectly_readable<_In>
      |             ^~~~~~~~~~~~~~~~~~~
p1205.cpp:459:45: error: expected unqualified-id before ',' token
  459 |   requires indirectly_copyable<iterator_t<R>, O> &&
      |                                             ^
p1205.cpp:462:72: error: expected unqualified-id before ')' token
  462 |     ranges::remove_copy(R&& r, O result, const T& value, Proj proj = {});
      |                                                                        ^
p1205.cpp:466:21: error: 'remove_copy_if_result' in namespace 'std::ranges' does not name a template type
  466 |   constexpr ranges::remove_copy_if_result<I, O>
      |                     ^~~~~~~~~~~~~~~~~~~~~
p1205.cpp:467:80: error: expected unqualified-id before ')' token
  467 |     ranges::remove_copy_if(I first, S last, O result, Pred pred, Proj proj = {});
      |                                                                                ^
p1205.cpp:468:10: error: 'input_range' has not been declared
  468 | template<input_range R, weakly_incrementable O, class Proj = identity,
      |          ^~~~~~~~~~~
p1205.cpp:468:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:469:45: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  469 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |                                             ^~~~~~~~~~
      |                                             std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:469:57: error: wrong number of template arguments (1, should be 2)
  469 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |                                                         ^
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:757:12: note: provided for 'template<class _Iter, class _Proj>  requires (indirectly_readable<_Iter>) && (indirectly_regular_unary_invocable<_Proj, _Iter>) struct std::projected'
  757 |     struct projected
      |            ^~~~~~~~~
p1205.cpp:469:10: error: wrong number of template arguments (3, should be 2)
  469 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:710:13: note: provided for 'template<class _Fn, class _Iter> concept std::indirect_unary_predicate'
  710 |     concept indirect_unary_predicate = indirectly_readable<_Iter>
      |             ^~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:469:67: error: 'Pred' does not name a type
  469 |          indirect_unary_predicate<projected<iterator_t<R>, Proj>> Pred>
      |                                                                   ^~~~
p1205.cpp:472:70: error: expected unqualified-id before ')' token
  472 |     ranges::remove_copy_if(R&& r, O result, Pred pred, Proj proj = {});
      |                                                                      ^
p1205.cpp:485:48: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  485 |        indirect_equivalence_relation<projected<iterator_t<R>, Proj>> C = ranges::equal_to>
      |                                                ^~~~~~~~~~
      |                                                std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:485:60: error: wrong number of template arguments (1, should be 2)
  485 |        indirect_equivalence_relation<projected<iterator_t<R>, Proj>> C = ranges::equal_to>
      |                                                            ^
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:757:12: note: provided for 'template<class _Iter, class _Proj>  requires (indirectly_readable<_Iter>) && (indirectly_regular_unary_invocable<_Proj, _Iter>) struct std::projected'
  757 |     struct projected
      |            ^~~~~~~~~
p1205.cpp:485:63: error: 'Proj' was not declared in this scope
  485 |        indirect_equivalence_relation<projected<iterator_t<R>, Proj>> C = ranges::equal_to>
      |                                                               ^~~~
p1205.cpp:485:8: error: template argument 1 is invalid
  485 |        indirect_equivalence_relation<projected<iterator_t<R>, Proj>> C = ranges::equal_to>
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:485:8: error: template argument 2 is invalid
p1205.cpp:485:8: error: template argument 3 is invalid
p1205.cpp:485:8: error: '<expression error>' does not name a type
p1205.cpp:488:36: error: expected unqualified-id before ',' token
  488 |   ranges::unique(R&& r, C comp = {}, Proj proj = {});
      |                                    ^
p1205.cpp:488:43: error: expected constructor, destructor, or type conversion before 'proj'
  488 |   ranges::unique(R&& r, C comp = {}, Proj proj = {});
      |                                           ^~~~
p1205.cpp:488:52: error: expected unqualified-id before ')' token
  488 |   ranges::unique(R&& r, C comp = {}, Proj proj = {});
      |                                                    ^
p1205.cpp:505:13: error: 'subrange' does not name a type
  505 |   constexpr subrange<I> ranges::unique(I first, S last, C comp = {}, Proj proj = {});
      |             ^~~~~~~~
p1205.cpp:505:68: error: expected unqualified-id before ',' token
  505 |   constexpr subrange<I> ranges::unique(I first, S last, C comp = {}, Proj proj = {});
      |                                                                    ^
p1205.cpp:505:75: error: expected constructor, destructor, or type conversion before 'proj'
  505 |   constexpr subrange<I> ranges::unique(I first, S last, C comp = {}, Proj proj = {});
      |                                                                           ^~~~
p1205.cpp:505:84: error: expected unqualified-id before ')' token
  505 |   constexpr subrange<I> ranges::unique(I first, S last, C comp = {}, Proj proj = {});
      |                                                                                    ^
p1205.cpp:506:10: error: 'forward_range' has not been declared
  506 | template<forward_range R, class Proj = identity,
      |          ^~~~~~~~~~~~~
p1205.cpp:506:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:513:48: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  513 |        indirect_equivalence_relation<projected<iterator_t<R>, Proj>> C = ranges::equal_to>
      |                                                ^~~~~~~~~~
      |                                                std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:513:60: error: wrong number of template arguments (1, should be 2)
  513 |        indirect_equivalence_relation<projected<iterator_t<R>, Proj>> C = ranges::equal_to>
      |                                                            ^
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:757:12: note: provided for 'template<class _Iter, class _Proj>  requires (indirectly_readable<_Iter>) && (indirectly_regular_unary_invocable<_Proj, _Iter>) struct std::projected'
  757 |     struct projected
      |            ^~~~~~~~~
p1205.cpp:513:8: error: template argument 2 is invalid
  513 |        indirect_equivalence_relation<projected<iterator_t<R>, Proj>> C = ranges::equal_to>
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:513:70: error: 'C' does not name a type
  513 |        indirect_equivalence_relation<projected<iterator_t<R>, Proj>> C = ranges::equal_to>
      |                                                                      ^
p1205.cpp:519:51: error: expected unqualified-id before ',' token
  519 |   ranges::unique_copy(R&& r, O result, C comp = {}, Proj proj = {});
      |                                                   ^
p1205.cpp:519:58: error: expected constructor, destructor, or type conversion before 'proj'
  519 |   ranges::unique_copy(R&& r, O result, C comp = {}, Proj proj = {});
      |                                                          ^~~~
p1205.cpp:519:67: error: expected unqualified-id before ')' token
  519 |   ranges::unique_copy(R&& r, O result, C comp = {}, Proj proj = {});
      |                                                                   ^
p1205.cpp:550:21: error: 'unique_copy_result' in namespace 'std::ranges' does not name a template type
  550 |   constexpr ranges::unique_copy_result<I, O>
      |                     ^~~~~~~~~~~~~~~~~~
p1205.cpp:551:63: error: expected unqualified-id before ',' token
  551 |     ranges::unique_copy(I first, S last, O result, C comp = {}, Proj proj = {});
      |                                                               ^
p1205.cpp:551:70: error: expected constructor, destructor, or type conversion before 'proj'
  551 |     ranges::unique_copy(I first, S last, O result, C comp = {}, Proj proj = {});
      |                                                                      ^~~~
p1205.cpp:551:79: error: expected unqualified-id before ')' token
  551 |     ranges::unique_copy(I first, S last, O result, C comp = {}, Proj proj = {});
      |                                                                               ^
p1205.cpp:552:10: error: 'input_range' has not been declared
  552 | template<input_range R, weakly_incrementable O, class Proj = identity,
      |          ^~~~~~~~~~~
p1205.cpp:552:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:568:3: error: expected 'class' or 'typename' before 'constexpr'
  568 |   constexpr void reverse(BidirectionalIterator first, BidirectionalIterator last);
      |   ^~~~~~~~~
p1205.cpp:568:3: error: expected identifier before 'constexpr'
p1205.cpp:568:3: error: expected '>' before 'constexpr'
p1205.cpp:568:82: error: expected unqualified-id before ';' token
  568 |   constexpr void reverse(BidirectionalIterator first, BidirectionalIterator last);
      |                                                                                  ^
p1205.cpp:574:46: error: 'I std::ranges::reverse(I, S)' should have been declared inside 'std::ranges'
  574 |   constexpr I ranges::reverse(I first, S last);
      |                                              ^
p1205.cpp:575:10: error: 'bidirectional_range' has not been declared
  575 | template<bidirectional_range R>
      |          ^~~~~~~~~~~~~~~~~~~
p1205.cpp:575:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:576:23: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  576 |   requires permutable<iterator_t<R>>
      |                       ^~~~~~~~~~
      |                       std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:576:12: error: parse error in template argument list
  576 |   requires permutable<iterator_t<R>>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:576:12: error: template argument 1 is invalid
p1205.cpp:577:13: error: 'borrowed_iterator_t' does not name a type
  577 |   constexpr borrowed_iterator_t<R> ranges::reverse(R&& r);
      |             ^~~~~~~~~~~~~~~~~~~
p1205.cpp:589:21: error: 'reverse_copy_result' in namespace 'std::ranges' does not name a template type
  589 |   constexpr ranges::reverse_copy_result<I, O>
      |                     ^~~~~~~~~~~~~~~~~~~
p1205.cpp:591:10: error: 'bidirectional_range' has not been declared
  591 | template<bidirectional_range R, weakly_incrementable O>
      |          ^~~~~~~~~~~~~~~~~~~
p1205.cpp:591:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:592:32: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  592 |   requires indirectly_copyable<iterator_t<R>, O>
      |                                ^~~~~~~~~~
      |                                std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:592:12: error: parse error in template argument list
  592 |   requires indirectly_copyable<iterator_t<R>, O>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:592:12: error: wrong number of template arguments (1, should be 2)
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:785:13: note: provided for 'template<class _In, class _Out> concept std::indirectly_copyable'
  785 |     concept indirectly_copyable = indirectly_readable<_In>
      |             ^~~~~~~~~~~~~~~~~~~
p1205.cpp:592:45: error: expected unqualified-id before ',' token
  592 |   requires indirectly_copyable<iterator_t<R>, O>
      |                                             ^
p1205.cpp:616:13: error: 'subrange' does not name a type
  616 |   constexpr subrange<I> ranges::rotate(I first, I middle, S last);
      |             ^~~~~~~~
p1205.cpp:617:10: error: 'forward_range' has not been declared
  617 | template<forward_range R>
      |          ^~~~~~~~~~~~~
p1205.cpp:617:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:618:23: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  618 |   requires permutable<iterator_t<R>>
      |                       ^~~~~~~~~~
      |                       std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:618:12: error: parse error in template argument list
  618 |   requires permutable<iterator_t<R>>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:618:12: error: template argument 1 is invalid
p1205.cpp:619:13: error: 'borrowed_subrange_t' does not name a type
  619 |   constexpr borrowed_subrange_t<R> ranges::rotate(R&& r, iterator_t<R> middle);
      |             ^~~~~~~~~~~~~~~~~~~
p1205.cpp:632:23: error: 'rotate_copy_result' in namespace 'std::ranges' does not name a template type
  632 |     constexpr ranges::rotate_copy_result<I, O>
      |                       ^~~~~~~~~~~~~~~~~~
p1205.cpp:640:30: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  640 |          indirectly_copyable<iterator_t<R>, O> &&
      |                              ^~~~~~~~~~
      |                              std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:640:10: error: parse error in template argument list
  640 |          indirectly_copyable<iterator_t<R>, O> &&
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:640:10: error: wrong number of template arguments (1, should be 2)
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:785:13: note: provided for 'template<class _In, class _Out> concept std::indirectly_copyable'
  785 |     concept indirectly_copyable = indirectly_readable<_In>
      |             ^~~~~~~~~~~~~~~~~~~
p1205.cpp:640:10: error: '<expression error>' does not name a type
  640 |          indirectly_copyable<iterator_t<R>, O> &&
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:653:10: error: 'forward_range' has not been declared
  653 | template<forward_range R, weakly_incrementable O>
      |          ^~~~~~~~~~~~~
p1205.cpp:653:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:654:32: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  654 |   requires indirectly_copyable<iterator_t<R>, O>
      |                                ^~~~~~~~~~
      |                                std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:654:12: error: parse error in template argument list
  654 |   requires indirectly_copyable<iterator_t<R>, O>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:654:12: error: wrong number of template arguments (1, should be 2)
/usr/local/include/c++/12.1.0/bits/iterator_concepts.h:785:13: note: provided for 'template<class _In, class _Out> concept std::indirectly_copyable'
  785 |     concept indirectly_copyable = indirectly_readable<_In>
      |             ^~~~~~~~~~~~~~~~~~~
p1205.cpp:654:45: error: expected unqualified-id before ',' token
  654 |   requires indirectly_copyable<iterator_t<R>, O>
      |                                             ^
p1205.cpp:658:1: error: expected unqualified-id before 'return'
  658 | return ranges::rotate_copy(ranges::begin(r), middle, ranges::end(r), result);
      | ^~~~~~
p1205.cpp:668:12: error: 'uniform_random_bit_generator' was not declared in this scope
  668 |            uniform_random_bit_generator<remove_reference_t<Gen>>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:667:38: error: expression must be enclosed in parentheses
  667 |            indirectly_copyable<I, O> &&
      |                                      ^~
p1205.cpp:668:12: error: 'uniform_random_bit_generator' does not name a type
  668 |            uniform_random_bit_generator<remove_reference_t<Gen>>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:670:10: error: 'input_range' has not been declared
  670 | template<input_range R, weakly_incrementable O, class Gen>
      |          ^~~~~~~~~~~
p1205.cpp:670:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:671:13: error: 'forward_range' was not declared in this scope; did you mean 'std::ranges::forward_range'?
  671 |   requires (forward_range<R> || random_access_iterator<O>) &&
      |             ^~~~~~~~~~~~~
      |             std::ranges::forward_range
/usr/local/include/c++/12.1.0/bits/ranges_base.h:665:13: note: 'std::ranges::forward_range' declared here
  665 |     concept forward_range
      |             ^~~~~~~~~~~~~
p1205.cpp:14:11: error: expected primary-expression before 'int'
   14 | #define R int
      |           ^~~
p1205.cpp:671:27: note: in expansion of macro 'R'
  671 |   requires (forward_range<R> || random_access_iterator<O>) &&
      |                           ^
p1205.cpp:671:27: error: expected ')' before 'int'
  671 |   requires (forward_range<R> || random_access_iterator<O>) &&
      |            ~              ^
      |                           )
p1205.cpp:675:55: error: expected unqualified-id before ';' token
  675 | borrowed_iterator_t<R> ranges::shuffle(R&& r, Gen&& g);
      |                                                       ^
p1205.cpp:688:12: error: 'uniform_random_bit_generator' was not declared in this scope
  688 |            uniform_random_bit_generator<remove_reference_t<Gen>>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:687:26: error: expression must be enclosed in parentheses
  687 |   requires permutable<I> &&
      |                          ^~
p1205.cpp:688:12: error: 'uniform_random_bit_generator' does not name a type
  688 |            uniform_random_bit_generator<remove_reference_t<Gen>>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:690:10: error: 'random_access_range' has not been declared
  690 | template<random_access_range R, class Gen>
      |          ^~~~~~~~~~~~~~~~~~~
p1205.cpp:690:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:691:23: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  691 |   requires permutable<iterator_t<R>> &&
      |                       ^~~~~~~~~~
      |                       std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:691:12: error: parse error in template argument list
  691 |   requires permutable<iterator_t<R>> &&
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:691:12: error: template argument 1 is invalid
p1205.cpp:698:1: error: expected primary-expression before 'template'
  698 | template<class ForwardIterator>
      | ^~~~~~~~
p1205.cpp:700:5: error: too many template-parameter-lists
  700 |     shift_left(ForwardIterator first, ForwardIterator last,
      |     ^~~~~~~~~~
p1205.cpp:707:13: error: 'subrange' does not name a type
  707 |   constexpr subrange<I> ranges::shift_left(I first, S last, iter_difference_t<I> n);
      |             ^~~~~~~~
p1205.cpp:708:10: error: 'forward_range' has not been declared
  708 | template<forward_range R>
      |          ^~~~~~~~~~~~~
p1205.cpp:708:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:709:23: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  709 |   requires permutable<iterator_t<R>>
      |                       ^~~~~~~~~~
      |                       std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:709:12: error: parse error in template argument list
  709 |   requires permutable<iterator_t<R>>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:709:12: error: template argument 1 is invalid
p1205.cpp:710:13: error: 'borrowed_subrange_t' does not name a type
  710 |   constexpr borrowed_subrange_t<R> ranges::shift_left(R&& r, range_difference_t<R> n)
      |             ^~~~~~~~~~~~~~~~~~~
p1205.cpp:724:13: error: 'subrange' does not name a type
  724 |   constexpr subrange<I> ranges::shift_right(I first, S last, iter_difference_t<I> n);
      |             ^~~~~~~~
p1205.cpp:725:10: error: 'forward_range' has not been declared
  725 | template<forward_range R>
      |          ^~~~~~~~~~~~~
p1205.cpp:725:10: error: two or more data types in declaration of 'parameter'
p1205.cpp:726:23: error: 'iterator_t' was not declared in this scope; did you mean 'std::ranges::iterator_t'?
  726 |   requires permutable<iterator_t<R>>
      |                       ^~~~~~~~~~
      |                       std::ranges::iterator_t
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: 'std::ranges::iterator_t' declared here
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1205.cpp:726:12: error: parse error in template argument list
  726 |   requires permutable<iterator_t<R>>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~
p1205.cpp:726:12: error: template argument 1 is invalid
p1205.cpp:727:13: error: 'borrowed_subrange_t' does not name a type
  727 |   constexpr borrowed_subrange_t<R> ranges::shift_right(R&& r, range_difference_t<R> n);
      |             ^~~~~~~~~~~~~~~~~~~

検討事項(agenda)

コンパイルエラーを取るか、コンパイルエラーの理由を解説する。

参考資料(reference)

関連する自己参照以外は、こちらの先頭に移転。

C言語(C++)に対する誤解、曲解、無理解、爽快。

#include "N4910.h"

C++N4910資料の改善点

dockerにclang

docker gnu(gcc/g++) and llvm(clang/clang++)

コンパイル用shell script C版(clangとgcc)とC++版(clang++とg++)

C++N4910:2022 tag follower 300人超えました。ありがとうございます。

astyle 使ってみた

DoCAP(ドゥーキャップ)って何ですか?

小川メソッド 覚え(書きかけ)

<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>

文書履歴(document history)

ver. 0.01 初稿  20220815

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?