27.10 Generalized numeric operations [numeric.ops] C++N4910:2022 (664) p1252.cpp

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

この半年の間で、三度、自分のネットでの記録に助けられたことがあります。
また過去に解決できなかった記録を１０種類以上、最近になって解決できたことがあります。それは、主に次の３つの情報に基づいています。
https://stackoverflow.com
http://ja.cppreference.com/

cpprefjp - C++日本語リファレンス
https://cpprefjp.github.io/

コンパイラの実装状況
https://cpprefjp.github.io/implementation-status.html

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

## 作業方針(sequence)
Clang++では-std=c++03, C++2bの2種類
g++では-std=c++03, c++2bの２種類
でコンパイルし、

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

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

C++N4910:2022 Standard Working Draft on ISO/IEC 14882(0) sample code compile list  
https://qiita.com/kaizen_nagoya/items/fc957ddddd402004bb91

C++N4741, 2018 Standard Working Draft on ISO/IEC 14882 sample code compile list
https://qiita.com/kaizen_nagoya/items/3294c014044550896010

### 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++
https://qiita.com/kaizen_nagoya/items/685b5c1a2c17c1bf1318

## 編纂器(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.10 Generalized numeric operations [numeric.ops] C++N4910:2022 (664) p1252.cpp

## 算譜(source code)

```c++:p1252.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.10 Generalized numeric operations [numeric.ops] C++N4910:2022 (664) p1252.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.10.1 General [numeric.ops.general]
// [Note 1: The use of closed ranges as well as semi-open ranges to specify requirements throughout 27.10 is intentional.
// 27.10.2 Definitions [numerics.defns]
// Define GENERALIZED_NONCOMMUTATIVE_SUM(op, a1, ..., aN) as follows:
// — a1 when N is 1, otherwise
// — op(GENERALIZED_NONCOMMUTATIVE_SUM(op, a1, ..., aK), GENERALIZED_NONCOMMUTATIVE_SUM(op, aM, ..., aN)) for any K where 1 < K + 1 = M ≤ N. Define GENERALIZED_SUM(op, a1, ..., aN) as GENERALIZED_NONCOMMUTATIVE_SUM(op, b1, ..., bN), where b1, ..., bN may be any permutation of a1, ..., aN.
// 27.10.3 Accumulate [accumulate]
template<class InputIterator, class T>
constexpr T accumulate(InputIterator first, InputIterator last, T init);
template<class InputIterator, class T, class BinaryOperation>
constexpr T accumulate(InputIterator first, InputIterator last, T init,
                       BinaryOperation binary_op);
// Preconditions: T meets the Cpp17CopyConstructible (Table 31) and Cpp17CopyAssignable (Table 33) requirements. In the range [first, last], binary_op neither modifies elements nor invalidates iterators or subranges.225
// Effects: Computes its result by initializing the accumulator acc with the initial value init and then modifies it with acc = std::move(acc) + *i or acc = binary_op(std::move(acc), *i) for every iterator i in the range [first, last) in order.226
template<class ExecutionPolicy, class ForwardIterator>
typename iterator_traits<ForwardIterator>::value_type
// 27.10.4 Reduce [reduce]
template<class InputIterator>
constexpr typename iterator_traits<InputIterator>::value_type
reduce(InputIterator first, InputIterator last);
// Effects: Equivalent to:
return reduce(first, last,
              typename iterator_traits<InputIterator>::value_type{});
reduce(ExecutionPolicy&& exec,
       ForwardIterator first, ForwardIterator last);
// Effects: Equivalent to:
return reduce(std::forward<ExecutionPolicy>(exec), first, last,
              typename iterator_traits<ForwardIterator>::value_type{});
template<class InputIterator, class T>
constexpr T reduce(InputIterator first, InputIterator last, T init);
// Effects: Equivalent to:
return reduce(first, last, init, plus<>());
template<class ExecutionPolicy, class ForwardIterator, class T>
T reduce(ExecutionPolicy&& exec,
         ForwardIterator first, ForwardIterator last, T init);
// Effects: Equivalent to:
return reduce(std::forward<ExecutionPolicy>(exec), first, last, init, plus<>());
template<class InputIterator, class T, class BinaryOperation>
constexpr T reduce(InputIterator first, InputIterator last, T init,
                   BinaryOperation binary_op);
template<class ExecutionPolicy, class ForwardIterator, class T, class BinaryOperation>
T reduce(ExecutionPolicy&& exec,
         ForwardIterator first, ForwardIterator last, T init,
         BinaryOperation binary_op);
// Mandates: All of
// — binary_op(init, *first), — binary_op(*first, init), — binary_op(init, init), and — binary_op(*first, *first) are convertible to T.
// Preconditions: -  T meets the Cpp17MoveConstructible (Table 30) requirements.
// — binary_op neither invalidates iterators or subranges, nor modifies elements in the range [first, last].
// Returns: GENERALIZED_SUM(binary_op, init, *i, ...) for every i in [first, last). Complexity: O(last - first) applications of binary_op.
// [Note 1: The difference between reduce and accumulate is that reduce applies binary_op in an unspecified order, which yields a nondeterministic result for non-associative or non-commutative binary_op such as floating-point addition. —end note]
// 27.10.5 Inner product [inner.product]
template<class InputIterator1, class InputIterator2, class T>
constexpr T inner_product(InputIterator1 first1, InputIterator1 last1,
                          InputIterator2 first2, T init);
T transform_reduce(ExecutionPolicy&& exec,
                   ForwardIterator1 first1, ForwardIterator1 last1,
                   ForwardIterator2 first2,
                   T init,
                   BinaryOperation1 binary_op1,
                   BinaryOperation2 binary_op2);
// Mandates: All of
// — binary_op1(init, init),
// — binary_op1(init, binary_op2(*first1, *first2)),
// — binary_op1(binary_op2(*first1, *first2), init), and
// — binary_op1(binary_op2(*first1, *first2), binary_op2(*first1, *first2))
template<class InputIterator1, class InputIterator2, class T,
         class BinaryOperation1, class BinaryOperation2>
constexpr T inner_product(InputIterator1 first1, InputIterator1 last1,
                          InputIterator2 first2, T init,
                          BinaryOperation1 binary_op1,
                          BinaryOperation2 binary_op2);
// Preconditions: T meets the Cpp17CopyConstructible (Table 31) and Cpp17CopyAssignable (Table 33) requirements. In the ranges [first1, last1] and [first2, first2 + (last1 - first1)] binary_op1 and binary_op2 neither modifies elements nor invalidates iterators or subranges.227
// Effects: Computes its result by initializing the accumulator acc with the initial value init and then modifying it with acc = std::move(acc) + (*i1) * (*i2) or acc = binary_op1(std::move(acc), binary_op2(*i1, *i2)) for every iterator i1 in the range [first1, last1) and iterator //  in the range [first2, first2 + (last1 - first1)) in order.
// 27.10.6 Transform reduce [transform.reduce]
template<class InputIterator1, class InputIterator2, class T>
constexpr T transform_reduce(InputIterator1 first1, InputIterator1 last1,
                             InputIterator2 first2, T init);
// Effects: Equivalent to:
return transform_reduce(first1, last1, first2, init, plus<>(), multiplies<>());
template<class ExecutionPolicy,
         class ForwardIterator1, class ForwardIterator2, class T>
T transform_reduce(ExecutionPolicy&& exec,
                   ForwardIterator1 first1, ForwardIterator1 last1,
                   ForwardIterator2 first2,
                   T init);
// Effects: Equivalent to:
return transform_reduce(std::forward<ExecutionPolicy>(exec),
                        first1, last1, first2, init, plus<>(), multiplies<>());
template<class InputIterator1, class InputIterator2, class T,
         class BinaryOperation1, class BinaryOperation2>
constexpr T transform_reduce(InputIterator1 first1, InputIterator1 last1,
                             InputIterator2 first2,
                             T init,
                             BinaryOperation1 binary_op1,
                             BinaryOperation2 binary_op2);
template<class ExecutionPolicy,
         class ForwardIterator1, class ForwardIterator2, class T,
         class BinaryOperation1, class BinaryOperation2>
// are convertible to T. Preconditions:
// — T meets the Cpp17MoveConstructible (Table 30) requirements.
// — Neither binary_op1 nor binary_op2 invalidates subranges, nor modifies elements in the ranges
// [first1, last1] and [first2, first2 + (last1 - first1)].
// Returns:
GENERALIZED_SUM(binary_op1, init, binary_op2(*i, *(first2 + (i - first1))), ...) for every iterator i in [first1, last1).
// Complexity: O(last1 - first1) applications each of binary_op1 and binary_op2.
            class BinaryOperation, class UnaryOperation>
                    T transform_reduce(ExecutionPolicy&& exec,
                                       ForwardIterator first, ForwardIterator last,
                                       T init, BinaryOperation binary_op, UnaryOperation unary_op);
// Mandates: All of
// — binary_op(init, init),
// — binary_op(init, unary_op(*first)),
// — binary_op(unary_op(*first), init), and
// — binary_op(unary_op(*first), unary_op(*first)) are convertible to T. Preconditions:
// — T meets the Cpp17MoveConstructible (Table 30) requirements.
// — Neither unary_op nor binary_op invalidates subranges, nor modifies elements in the range
// Mandates: InputIterator’s value type is constructible from *first. The result of the expression std::move(acc) + *i or binary_op(std::move(acc), *i) is implicitly convertible to InputItera- tor’s value type. acc is writable (25.3.1) to result.
// Preconditions: In the ranges [first, last] and [result, result + (last // - first)] binary_op neither modifies elements nor invalidates iterators or subranges.228
        template<class InputIterator, class T,
                 class BinaryOperation, class UnaryOperation>
        constexpr T transform_reduce(InputIterator first, InputIterator last, T init,
                                     BinaryOperation binary_op, UnaryOperation unary_op);
template<class ExecutionPolicy,
         class ForwardIterator, class T, [first, last].
// Returns:
         GENERALIZED_SUM(binary_op, init, unary_op(*i), ...)
// for every iterator i in [first, last).
// Complexity: O(last - first) applications each of unary_op and binary_op.
//  [Note 1: transform_reduce does not apply unary_op to init.
// 27.10.7 Partial sum [partial.sum]
         template<class InputIterator, class OutputIterator>
         constexpr OutputIterator
         partial_sum(InputIterator first, InputIterator last,
                     OutputIterator result);
template<class InputIterator, class OutputIterator, class BinaryOperation>
constexpr OutputIterator
partial_sum(InputIterator first, InputIterator last,
            OutputIterator result, BinaryOperation binary_op);
ForwardIterator2
exclusive_scan(ExecutionPolicy&& exec,
               ForwardIterator1 first, ForwardIterator1 last,
               ForwardIterator2 result, T init, BinaryOperation binary_op);
// Mandates: All of
// — binary_op(init, init),
// — binary_op(init, *first), and — binary_op(*first, *first) are convertible to T. Preconditions:
// — T meets the Cpp17MoveConstructible (Table 30) requirements.
// — binary_op neither invalidates iterators or subranges, nor modifies elements in the ranges [first, last] or [result, result + (last - first)].
// Effects: For each integer K in [0, last - first) assigns through result + K the value of:
GENERALIZED_NONCOMMUTATIVE_SUM( binary_op, init, *(first + 0), *(first + 1), ..., *(first + K - 1))
// Returns: The end of the resulting range beginning at result.
// Complexity: O(last - first) applications of binary_op. Remarks: result may be equal to first.
// [Note 1: The difference between exclusive_scan and inclusive_scan is that exclusive_scan excludes the ith input element from the ith sum. If binary_op is not mathematically associative, the behavior of exclusive_scan can be nondeterministic.
// Effects: For a non-empty range, the function creates an accumulator acc whose type is InputIterator’s value type, initializes it with *first, and assigns the result to *result. For every iterator i in [first + 1, last) in order, acc is then modified by acc = std::move(acc) + *i or acc = binary_- op(std::move(acc), *i) and the result is assigned to *(result + (i - first)).
// Returns: result + (last - first).
// Complexity: Exactly (last - first) - 1 applications of the binary operation. Remarks: result may be equal to first.
// 27.10.8 Exclusive scan [exclusive.scan]
template<class InputIterator, class OutputIterator, class T>
constexpr OutputIterator
exclusive_scan(InputIterator first, InputIterator last,
               OutputIterator result, T init);
// Effects: Equivalent to:
return exclusive_scan(first, last, result, init, plus<>());
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2, class T>
ForwardIterator2
exclusive_scan(ExecutionPolicy&& exec,
               ForwardIterator1 first, ForwardIterator1 last,
               ForwardIterator2 result, T init);
// Effects: Equivalent to:
return exclusive_scan(std::forward<ExecutionPolicy>(exec),
                      first, last, result, init, plus<>());
template<class InputIterator, class OutputIterator, class T, class BinaryOperation>
constexpr OutputIterator
exclusive_scan(InputIterator first, InputIterator last,
               OutputIterator result, T init, BinaryOperation binary_op);
template<class ExecutionPolicy,
         class ForwardIterator1, class ForwardIterator2, class T, class BinaryOperation>
ForwardIterator2
inclusive_scan(ExecutionPolicy&& exec,
               ForwardIterator1 first, ForwardIterator1 last,
               ForwardIterator2 result, BinaryOperation binary_op, T init);
// Let U be the value type of decltype(first). Mandates: If init is provided, all of
// — binary_op(init, init),
// — binary_op(init, *first), and — binary_op(*first, *first) are convertible to T; otherwise, binary_op(*first, *first) is convertible to U. Preconditions:
// — If init is provided, T meets the Cpp17MoveConstructible (Table 30) requirements; otherwise, U meets the Cpp17MoveConstructible requirements.
// — binary_op neither invalidates iterators or subranges, nor modifies elements in the ranges [first, last] or [result, result + (last - first)].
// Effects: For each integer K in [0, last - first) assigns through result + K the value of
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2>
ForwardIterator2
// 27.10.9 Inclusive scan [inclusive.scan]
template<class InputIterator, class OutputIterator>
constexpr OutputIterator
inclusive_scan(InputIterator first, InputIterator last,
               OutputIterator result);
// Effects: Equivalent to:
return inclusive_scan(first, last, result, plus<>());
inclusive_scan(ExecutionPolicy&& exec,
               ForwardIterator1 first, ForwardIterator1 last,
               ForwardIterator2 result);
// Effects: Equivalent to:
return inclusive_scan(std::forward<ExecutionPolicy>(exec), first, last, result, plus<>());
template<class InputIterator, class OutputIterator, class BinaryOperation>
constexpr OutputIterator
inclusive_scan(InputIterator first, InputIterator last,
               OutputIterator result, BinaryOperation binary_op);
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2,
         class BinaryOperation>
ForwardIterator2
inclusive_scan(ExecutionPolicy&& exec,
               ForwardIterator1 first, ForwardIterator1 last,
               ForwardIterator2 result, BinaryOperation binary_op);
template<class InputIterator, class OutputIterator, class BinaryOperation, class T>
constexpr OutputIterator
inclusive_scan(InputIterator first, InputIterator last,
               OutputIterator result, BinaryOperation binary_op, T init);
template<class ExecutionPolicy,
         class ForwardIterator1, class ForwardIterator2, class BinaryOperation, class T>
GENERALIZED_NONCOMMUTATIVE_SUM(
    binary_op, init, *(first + 0), *(first + 1), ..., *(first + K))
// if init is provided, or
GENERALIZED_NONCOMMUTATIVE_SUM(
    binary_op, *(first + 0), *(first + 1), ..., *(first + K))
otherwise.
class ForwardIterator1, class ForwardIterator2, class T,
class BinaryOperation, class UnaryOperation>
ForwardIterator2
transform_exclusive_scan(ExecutionPolicy&& exec,
                         ForwardIterator1 first, ForwardIterator1 last,
                         ForwardIterator2 result, T init,
                         BinaryOperation binary_op, UnaryOperation unary_op);
// Mandates: All of
// — binary_op(init, init),
// — binary_op(init, unary_op(*first)), and
// — binary_op(unary_op(*first), unary_op(*first)) are convertible to T. Preconditions:
// — T meets the Cpp17MoveConstructible (Table 30) requirements.
// — Neither unary_op nor binary_op invalidates iterators or subranges, nor modifies elements in the ranges [first, last] or [result, result + (last - first)].
// Effects: For each integer K in [0, last - first) assigns through result + K the value of: GENERALIZED_NONCOMMUTATIVE_SUM( binary_op, init, unary_op(*(first + 0)), unary_op(*(first + 1)), ..., unary_op(*(first + K - 1)))
// Returns: The end of the resulting range beginning at result.
// Complexity: O(last - first) applications each of unary_op and binary_op. Remarks: result may be equal to first.
// [Note 1: The difference between transform_exclusive_scan and transform_inclusive_scan is that trans- form_exclusive_scan excludes the ith input element from the ith sum. If binary_op is not mathematically associative, the behavior of transform_exclusive_scan can be nondeterministic. transform_exclusive_scan does not apply unary_op to init.
// Returns: The end of the resulting range beginning at result. // Complexity: O(last - first) applications of binary_op. Remarks: result may be equal to first.
// [Note 1: The difference between exclusive_scan and inclusive_scan is that inclusive_scan includes the ith input element in the ith sum. If binary_op is not mathematically associative, the behavior of inclusive_scan can be nondeterministic.
// 27.10.10 Transform exclusive scan [transform.exclusive.scan]
template<class InputIterator, class OutputIterator, class T,
         class BinaryOperation, class UnaryOperation>
constexpr OutputIterator
transform_exclusive_scan(InputIterator first, InputIterator last,
                         OutputIterator result, T init,
                         BinaryOperation binary_op, UnaryOperation unary_op);
template<class ExecutionPolicy,
// 27.10.11 Transform inclusive scan [transform.inclusive.scan]
         template<class InputIterator, class OutputIterator,
                  class BinaryOperation, class UnaryOperation>
         constexpr OutputIterator
         transform_inclusive_scan(InputIterator first, InputIterator last,
                                  OutputIterator result,
                                  BinaryOperation binary_op, UnaryOperation unary_op);
template<class ExecutionPolicy,
         class ForwardIterator1, class ForwardIterator2,
         class BinaryOperation, class UnaryOperation>
ForwardIterator2
transform_inclusive_scan(ExecutionPolicy&& exec,
                         ForwardIterator1 first, ForwardIterator1 last,
                         ForwardIterator2 result,
                         BinaryOperation binary_op, UnaryOperation unary_op);
template<class InputIterator, class OutputIterator,
         class BinaryOperation, class UnaryOperation, class T>
constexpr OutputIterator
transform_inclusive_scan(InputIterator first, InputIterator last,
                         OutputIterator result,
                         BinaryOperation binary_op, UnaryOperation unary_op,
                         T init);
template<class ExecutionPolicy,
         class ForwardIterator1, class ForwardIterator2,
         class BinaryOperation, class UnaryOperation, class T>
ForwardIterator2
transform_inclusive_scan(ExecutionPolicy&& exec,
                         ForwardIterator1 first, ForwardIterator1 last,
                         ForwardIterator2 result,
                         BinaryOperation binary_op, UnaryOperation unary_op,
                         T init);
// Let U be the value type of decltype(first). Mandates: If init is provided, all of
// — binary_op(init, init),
// — binary_op(init, unary_op(*first)), and
// — binary_op(unary_op(*first), unary_op(*first)) are convertible to T; otherwise, binary_op(unary_op(*first), unary_op(*first)) is convertible to U.
// Preconditions: — If init is provided, T meets the Cpp17MoveConstructible (Table 30) requirements; otherwise, U meets the Cpp17MoveConstructible requirements.
// — Neither unary_op nor binary_op invalidates iterators or subranges, nor modifies elements in the ranges [first, last] or [result, result + (last - first)].
// Effects: For each integer K in [0, last - first) assigns through result + K the value of
// — GENERALIZED_NONCOMMUTATIVE_SUM( binary_op, init, unary_op(*(first + 0)), unary_op(*(first + 1)), ..., unary_op(*(first + K))) if init is provided, or
// — GENERALIZED_NONCOMMUTATIVE_SUM( binary_op,
unary_op(*(first + 0)), unary_op(*(first + 1)), ..., unary_op(*(first + K)))
// otherwise.
// Returns: The end of the resulting range beginning at result.
// Complexity: O(last - first) applications each of unary_op and binary_op. Remarks: result may be equal to first.
// [Note 1: The difference between transform_exclusive_scan and transform_inclusive_scan is that trans- form_inclusive_scan includes the ith input element in the ith sum. If binary_op is not mathematically associative, the behavior of transform_inclusive_scan can be nondeterministic. transform_inclusive_scan does not apply unary_op to init.
// 27.10.12 Adjacent difference [adjacent.difference]
template<class InputIterator, class OutputIterator>
constexpr OutputIterator
adjacent_difference(InputIterator first, InputIterator last,
                    OutputIterator result);
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2>
ForwardIterator2
adjacent_difference(ExecutionPolicy&& exec,
                    ForwardIterator1 first, ForwardIterator1 last, ForwardIterator2 result);
template<class InputIterator, class OutputIterator, class BinaryOperation>
constexpr OutputIterator
adjacent_difference(InputIterator first, InputIterator last,
                    OutputIterator result, BinaryOperation binary_op);
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2,
         class BinaryOperation>
ForwardIterator2
adjacent_difference(ExecutionPolicy&& exec,
                    ForwardIterator1 first, ForwardIterator1 last,
                    ForwardIterator2 result, BinaryOperation binary_op);
// Let T be the value type of decltype(first). For the overloads that do not take an argument binary_op, let binary_op be an lvalue that denotes an object of type minus<>.
// Mandates: — For the overloads with no ExecutionPolicy, T is constructible from *first. acc (defined below) is writable (25.3.1) to the result output iterator. The result of the expression binary_op(val, std::move(acc)) is writable to result.
//  — For the overloads with an ExecutionPolicy, the result of the expressions binary_op(*first, *first) and *first are writable to result.
// Preconditions: — For the overloads with no ExecutionPolicy, T meets the Cpp17MoveAssignable (Table 32) requirements.
// — For all overloads, in the ranges [first, last] and [result, result + (last - first)], binary_-op neither modifies elements nor invalidate iterators or subranges.
// Effects: For the overloads with no ExecutionPolicy and a non-empty range, the function creates an accumulator acc of type T, initializes it with *first, and assigns the result to *result. For every iterator i in [first + 1, last) in order, creates an object val whose type is T, initializes it with *i, computes binary_op(val, std::move(acc)), assigns the result to *(result + (i - first)), and move assigns from val to acc.
// For the overloads with an ExecutionPolicy and a non-empty range, performs *result = *first. Then, for every d in [1, last - first - 1], performs *(result + d) = binary_op(*(first + d), *(first + (d - 1))).
// Returns: result + (last - first).
// Complexity: Exactly (last - first) - 1 applications of the binary operation.
// Remarks: For the overloads with no ExecutionPolicy, result may be equal to first. For the overloads with an ExecutionPolicy, the ranges [first, last) and [result, result + (last - first)) shall not overlap.
//  [numeric.iota]
template<class ForwardIterator, class T>
constexpr void iota(ForwardIterator first, ForwardIterator last, T value);
// Mandates: T is convertible to ForwardIterator’s value type. The expression ++val, where val has type T, is well-formed.
// Effects: For each element referred to by the iterator i in the range [first, last), assigns *i = value and increments value as if by ++value.
// Complexity: Exactly last - first increments and assignments.
template<input_or_output_iterator O, sentinel_for<O> S, weakly_incrementable T>
requires indirectly_writable<O, const T&>
constexpr ranges::iota_result<O, T> ranges::iota(O first, S last, T value);
template<weakly_incrementable T, output_range<const T&> R>
constexpr ranges::iota_result<borrowed_iterator_t<R>, T> ranges::iota(R&& r, T value);
// Effects: Equivalent to:
while (first != last) {
*first = as_const(value);
    ++first;
    ++value;
}
return {std::move(first), std::move(value)};
// Mandates: M and N both are integer types other than cv bool.
// Preconditions: |m| and |n| are representable as a value of common_type_t<M, N>.
// [Note 1 : These requirements ensure, for example, that gcd(m, m) = |m| is representable as a value of type M.
// Returns: Zero when m and n are both zero. Otherwise, returns the greatest common divisor of |m| and |n|.
// 27.10.14 Greatest common divisor [numeric.ops.gcd]
template<class M, class N>
constexpr common_type_t<M, N> gcd(M m, N n);
// Throws: Nothing.
// 27.10.15 Least common multiple [numeric.ops.lcm]
template<class M, class N>
constexpr common_type_t<M, N> lcm(M m, N n);
// Mandates: M and N both are integer types other than cv bool.
// Preconditions: |m| and |n| are representable as a value of common_type_t<M, N>. The least common multiple of |m| and |n| is representable as a value of type common_type_t<M, N>.
// Returns: Zero when either m or n is zero. Otherwise, returns the least common multiple of |m| and |n|. Throws: Nothing.
// 27.10.16 Midpoint [numeric.ops.midpoint]
template<class T>
constexpr T midpoint(T a, T b) noexcept;
// Constraints: T is an arithmetic type other than bool.
// Returns: Half the sum of a and b. If T is an integer type and the sum is odd, the result is roundedtowards a.
// Remarks: No overflow occurs. If T is a floating-point type, at most one inexact operation occurs.
template<class T>
constexpr T* midpoint(T* a, T* b);
// Constraints: T is an object type.
// Mandates: T is a complete type.
// Preconditions: a and b point to, respectively, elements i and j of the same array object x.
// [Note 1: As specified in 6.8.3, an object that is not an array element is considered to belong to a single-element array for this purpose and a pointer past the last element of an array of n elements is considered to be equivalent to a pointer to a hypothetical array element n for this purpose.
// Returns: A pointer to array element i + j−i of x, where the result of the division is truncated towards 2 zero.
int main() {
    cout  <<  n4910 << endl;
           return EXIT_SUCCESS;
}
```

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

```ubuntu:bash
$ clang++ p1252.cpp -std=03 -o p1252l -I. -Wall
In file included from p1252.cpp:11:
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 \
 ^
p1252.cpp:23:3: error: unknown type name 'constexpr'
  constexpr T accumulate(InputIterator first, InputIterator last, T init);
  ^
p1252.cpp:23:13: warning: variable templates are a C++14 extension [-Wc++14-extensions]
  constexpr T accumulate(InputIterator first, InputIterator last, T init);
            ^
p1252.cpp:23:14: error: expected ';' at end of declaration
  constexpr T accumulate(InputIterator first, InputIterator last, T init);
             ^
             ;
p1252.cpp:23:26: error: unknown type name 'InputIterator'
  constexpr T accumulate(InputIterator first, InputIterator last, T init);
                         ^
p1252.cpp:23:47: error: unknown type name 'InputIterator'
  constexpr T accumulate(InputIterator first, InputIterator last, T init);
                                              ^
p1252.cpp:23:67: error: unknown type name 'T'
  constexpr T accumulate(InputIterator first, InputIterator last, T init);
                                                                  ^
p1252.cpp:23:15: error: C++ requires a type specifier for all declarations
  constexpr T accumulate(InputIterator first, InputIterator last, T init);
              ^
p1252.cpp:25:3: error: unknown type name 'constexpr'
  constexpr T accumulate(InputIterator first, InputIterator last, T init,
  ^
p1252.cpp:25:13: warning: variable templates are a C++14 extension [-Wc++14-extensions]
  constexpr T accumulate(InputIterator first, InputIterator last, T init,
            ^
p1252.cpp:25:14: error: expected ';' at end of declaration
  constexpr T accumulate(InputIterator first, InputIterator last, T init,
             ^
             ;
p1252.cpp:25:26: error: unknown type name 'InputIterator'
  constexpr T accumulate(InputIterator first, InputIterator last, T init,
                         ^
p1252.cpp:25:47: error: unknown type name 'InputIterator'
  constexpr T accumulate(InputIterator first, InputIterator last, T init,
                                              ^
p1252.cpp:25:67: error: unknown type name 'T'
  constexpr T accumulate(InputIterator first, InputIterator last, T init,
                                                                  ^
p1252.cpp:26:1: error: unknown type name 'BinaryOperation'
BinaryOperation binary_op);
^
p1252.cpp:25:15: error: C++ requires a type specifier for all declarations
  constexpr T accumulate(InputIterator first, InputIterator last, T init,
              ^
p1252.cpp:32:1: error: expected unqualified-id
template<class InputIterator>
^
p1252.cpp:36:1: error: expected unqualified-id
return reduce(first, last,
^
p1252.cpp:38:8: error: unknown type name 'ExecutionPolicy'
reduce(ExecutionPolicy&& exec,
       ^
p1252.cpp:38:23: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
reduce(ExecutionPolicy&& exec,
                      ^
p1252.cpp:39:8: error: unknown type name 'ForwardIterator'
       ForwardIterator first, ForwardIterator last);
       ^
p1252.cpp:39:31: error: unknown type name 'ForwardIterator'
       ForwardIterator first, ForwardIterator last);
                              ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
3 warnings and 20 errors generated.
$ clang++ p1252.cpp -std=2b -o p1252l -I. -Wall
p1252.cpp:32:1: error: expected unqualified-id
template<class InputIterator>
^
p1252.cpp:36:1: error: expected unqualified-id
return reduce(first, last,
^
p1252.cpp:38:8: error: unknown type name 'ExecutionPolicy'
reduce(ExecutionPolicy&& exec,
       ^
p1252.cpp:39:8: error: unknown type name 'ForwardIterator'
       ForwardIterator first, ForwardIterator last);
       ^
p1252.cpp:39:31: error: unknown type name 'ForwardIterator'
       ForwardIterator first, ForwardIterator last);
                              ^
p1252.cpp:38:1: error: C++ requires a type specifier for all declarations
reduce(ExecutionPolicy&& exec,
^
p1252.cpp:41:1: error: expected unqualified-id
return reduce(std::forward<ExecutionPolicy>(exec), first, last,
^
p1252.cpp:46:1: error: expected unqualified-id
return reduce(first, last, init, plus<>());
^
p1252.cpp:51:1: error: expected unqualified-id
return reduce(std::forward<ExecutionPolicy>(exec), first, last, init, plus<>());
^
p1252.cpp:69:1: error: unknown type name 'T'
T transform_reduce(ExecutionPolicy&& exec,
^
p1252.cpp:69:20: error: unknown type name 'ExecutionPolicy'
T transform_reduce(ExecutionPolicy&& exec,
                   ^
p1252.cpp:70:20: error: unknown type name 'ForwardIterator1'
                   ForwardIterator1 first1, ForwardIterator1 last1,
                   ^
p1252.cpp:70:45: error: unknown type name 'ForwardIterator1'
                   ForwardIterator1 first1, ForwardIterator1 last1,
                                            ^
p1252.cpp:71:20: error: unknown type name 'ForwardIterator2'
                   ForwardIterator2 first2,
                   ^
p1252.cpp:72:20: error: unknown type name 'T'
                   T init,
                   ^
p1252.cpp:73:20: error: unknown type name 'BinaryOperation1'
                   BinaryOperation1 binary_op1,
                   ^
p1252.cpp:74:20: error: unknown type name 'BinaryOperation2'
                   BinaryOperation2 binary_op2);
                   ^
p1252.cpp:93:1: error: expected unqualified-id
return transform_reduce(first1, last1, first2, init, plus<>(), multiplies<>());
^
p1252.cpp:101:1: error: expected unqualified-id
return transform_reduce(std::forward<ExecutionPolicy>(exec),
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.

$ g++ p1252.cpp -std=03 -o p1252g -I. -Wall
In file included from /usr/local/include/c++/12.1.0/atomic:38,
                 from N4910.h:11,
                 from p1252.cpp:11:
/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 \
      |  ^~~~~
p1252.cpp:23:3: warning: identifier 'constexpr' is a keyword in C++11 [-Wc++11-compat]
   23 |   constexpr T accumulate(InputIterator first, InputIterator last, T init);
      |   ^~~~~~~~~
p1252.cpp:372:34: warning: identifier 'noexcept' is a keyword in C++11 [-Wc++11-compat]
  372 |   constexpr T midpoint(T a, T b) noexcept;
      |                                  ^~~~~~~~
p1252.cpp:23:3: error: 'constexpr' does not name a type
   23 |   constexpr T accumulate(InputIterator first, InputIterator last, T init);
      |   ^~~~~~~~~
p1252.cpp:23:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1252.cpp:25:3: error: 'constexpr' does not name a type
   25 |   constexpr T accumulate(InputIterator first, InputIterator last, T init,
      |   ^~~~~~~~~
p1252.cpp:25:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1252.cpp:32:1: error: expected unqualified-id before 'template'
   32 | template<class InputIterator>
      | ^~~~~~~~
p1252.cpp:36:1: error: expected unqualified-id before 'return'
   36 | return reduce(first, last,
      | ^~~~~~
p1252.cpp:37:75: error: expected unqualified-id before ')' token
   37 |                      typename iterator_traits<InputIterator>::value_type{});
      |                                                                           ^
p1252.cpp:38:7: error: expected constructor, destructor, or type conversion before '(' token
   38 | reduce(ExecutionPolicy&& exec,
      |       ^
p1252.cpp:41:1: error: expected unqualified-id before 'return'
   41 | return reduce(std::forward<ExecutionPolicy>(exec), first, last,
      | ^~~~~~
p1252.cpp:42:73: error: expected unqualified-id before ')' token
   42 |                  typename iterator_traits<ForwardIterator>::value_type{});
      |                                                                         ^
p1252.cpp:44:3: error: 'constexpr' does not name a type
   44 |   constexpr T reduce(InputIterator first, InputIterator last, T init);
      |   ^~~~~~~~~
p1252.cpp:44:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1252.cpp:46:1: error: expected unqualified-id before 'return'
   46 | return reduce(first, last, init, plus<>());
      | ^~~~~~
p1252.cpp:48:27: error: expected ',' or '...' before '&&' token
   48 |   T reduce(ExecutionPolicy&& exec,
      |                           ^~
p1252.cpp:51:1: error: expected unqualified-id before 'return'
   51 | return reduce(std::forward<ExecutionPolicy>(exec), first, last, init, plus<>());
      | ^~~~~~
p1252.cpp:53:3: error: 'constexpr' does not name a type
   53 |   constexpr T reduce(InputIterator first, InputIterator last, T init,
      |   ^~~~~~~~~
p1252.cpp:53:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1252.cpp:56:25: error: expected ',' or '...' before '&&' token
   56 | T reduce(ExecutionPolicy&& exec,
      |                         ^~
p1252.cpp:67:3: error: 'constexpr' does not name a type
   67 |   constexpr T inner_product(InputIterator1 first1, InputIterator1 last1,
      |   ^~~~~~~~~
p1252.cpp:67:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1252.cpp:69:1: error: 'T' does not name a type
   69 | T transform_reduce(ExecutionPolicy&& exec,
      | ^
p1252.cpp:82:3: error: 'constexpr' does not name a type
   82 |   constexpr T inner_product(InputIterator1 first1, InputIterator1 last1,
      |   ^~~~~~~~~
p1252.cpp:82:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1252.cpp:90:3: error: 'constexpr' does not name a type
   90 |   constexpr T transform_reduce(InputIterator1 first1, InputIterator1 last1,
      |   ^~~~~~~~~
p1252.cpp:90:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1252.cpp:93:1: error: expected unqualified-id before 'return'
   93 | return transform_reduce(first1, last1, first2, init, plus<>(), multiplies<>());
      | ^~~~~~
p1252.cpp:96:35: error: expected ',' or '...' before '&&' token
   96 | T transform_reduce(ExecutionPolicy&& exec,
      |                                   ^~
p1252.cpp:101:1: error: expected unqualified-id before 'return'
  101 | return transform_reduce(std::forward<ExecutionPolicy>(exec),
      | ^~~~~~
p1252.cpp:105:3: error: 'constexpr' does not name a type
  105 |   constexpr T transform_reduce(InputIterator1 first1, InputIterator1 last1,
      |   ^~~~~~~~~
p1252.cpp:105:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1252.cpp:118:16: error: expected constructor, destructor, or type conversion before '(' token
  118 | GENERALIZED_SUM(binary_op1, init, binary_op2(*i, *(first2 + (i - first1))), ...) for every iterator i in [first1, last1).
      |                ^
p1252.cpp:135:3: error: 'constexpr' does not name a type
  135 |   constexpr T transform_reduce(InputIterator first, InputIterator last, T init,
      |   ^~~~~~~~~
p1252.cpp:135:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1252.cpp:138:42: error: expected identifier before '[' token
  138 |          class ForwardIterator, class T, [first, last].
      |                                          ^
p1252.cpp:138:43: error: 'first' was not declared in this scope
  138 |          class ForwardIterator, class T, [first, last].
      |                                           ^~~~~
p1252.cpp:138:48: error: expected ']' before ',' token
  138 |          class ForwardIterator, class T, [first, last].
      |                                                ^
      |                                                ]
p1252.cpp:138:50: error: 'last' has not been declared
  138 |          class ForwardIterator, class T, [first, last].
      |                                                  ^~~~
p1252.cpp:138:54: error: expected '>' before ']' token
  138 |          class ForwardIterator, class T, [first, last].
      |                                                      ^
p1252.cpp:138:54: error: expected unqualified-id before ']' token
p1252.cpp:150:3: error: 'constexpr' does not name a type
  150 |   constexpr OutputIterator
      |   ^~~~~~~~~
p1252.cpp:150:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1252.cpp:153:1: error: 'ForwardIterator2' does not name a type
  153 | ForwardIterator2
      | ^~~~~~~~~~~~~~~~
p1252.cpp:163:31: error: expected constructor, destructor, or type conversion before '(' token
  163 | GENERALIZED_NONCOMMUTATIVE_SUM( binary_op, init, *(first + 0), *(first + 1), ..., *(first + K - 1))
      |                               ^
p1252.cpp:176:1: error: expected unqualified-id before 'return'
  176 | return exclusive_scan(first, last, result, init, plus<>());
      | ^~~~~~
p1252.cpp:179:31: error: expected ',' or '...' before '&&' token
  179 | exclusive_scan(ExecutionPolicy&& exec,
      |                               ^~
p1252.cpp:183:1: error: expected unqualified-id before 'return'
  183 | return exclusive_scan(std::forward<ExecutionPolicy>(exec),
      | ^~~~~~
p1252.cpp:186:3: error: 'constexpr' does not name a type
  186 |   constexpr OutputIterator
      |   ^~~~~~~~~
p1252.cpp:186:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1252.cpp:192:33: error: expected ',' or '...' before '&&' token
  192 |   inclusive_scan(ExecutionPolicy&& exec,
      |                                 ^~
p1252.cpp:204:1: error: expected unqualified-id before 'template'
  204 | template<class InputIterator, class OutputIterator>
      | ^~~~~~~~
p1252.cpp:209:1: error: expected unqualified-id before 'return'
  209 | return inclusive_scan(first, last, result, plus<>());
      | ^~~~~~
p1252.cpp:210:15: error: expected constructor, destructor, or type conversion before '(' token
  210 | inclusive_scan(ExecutionPolicy&& exec,
      |               ^
p1252.cpp:214:1: error: expected unqualified-id before 'return'
  214 | return inclusive_scan(std::forward<ExecutionPolicy>(exec), first, last, result, plus<>());
      | ^~~~~~
p1252.cpp:216:3: error: 'constexpr' does not name a type
  216 |   constexpr OutputIterator
      |   ^~~~~~~~~
p1252.cpp:216:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1252.cpp:222:35: error: expected ',' or '...' before '&&' token
  222 |     inclusive_scan(ExecutionPolicy&& exec,
      |                                   ^~
p1252.cpp:226:3: error: 'constexpr' does not name a type
  226 |   constexpr OutputIterator
      |   ^~~~~~~~~
p1252.cpp:226:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1252.cpp:231:31: error: expected constructor, destructor, or type conversion before '(' token
  231 | GENERALIZED_NONCOMMUTATIVE_SUM(
      |                               ^
p1252.cpp:259:3: error: 'constexpr' does not name a type
  259 |   constexpr OutputIterator
      |   ^~~~~~~~~
p1252.cpp:259:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1252.cpp:267:3: error: expected 'class' or 'typename' before 'constexpr'
  267 |   constexpr OutputIterator
      |   ^~~~~~~~~
p1252.cpp:267:13: error: expected '>' before 'OutputIterator'
  267 |   constexpr OutputIterator
      |             ^~~~~~~~~~~~~~
p1252.cpp:270:81: error: expected unqualified-id before ';' token
  270 |                              BinaryOperation binary_op, UnaryOperation unary_op);
      |                                                                                 ^
p1252.cpp:275:45: error: expected ',' or '...' before '&&' token
  275 |     transform_inclusive_scan(ExecutionPolicy&& exec,
      |                                             ^~
p1252.cpp:281:3: error: 'constexpr' does not name a type
  281 |   constexpr OutputIterator
      |   ^~~~~~~~~
p1252.cpp:281:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1252.cpp:290:45: error: expected ',' or '...' before '&&' token
  290 |     transform_inclusive_scan(ExecutionPolicy&& exec,
      |                                             ^~
p1252.cpp:304:22: error: expected constructor, destructor, or type conversion before '(' token
  304 |              unary_op(*(first + 0)), unary_op(*(first + 1)), ..., unary_op(*(first + K)))
      |                      ^
p1252.cpp:316:40: error: expected ',' or '...' before '&&' token
  316 |     adjacent_difference(ExecutionPolicy&& exec,
      |                                        ^~
p1252.cpp:319:3: error: 'constexpr' does not name a type
  319 |   constexpr OutputIterator
      |   ^~~~~~~~~
p1252.cpp:319:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1252.cpp:325:40: error: expected ',' or '...' before '&&' token
  325 |     adjacent_difference(ExecutionPolicy&& exec,
      |                                        ^~
p1252.cpp:340:3: error: 'constexpr' does not name a type
  340 |   constexpr void iota(ForwardIterator first, ForwardIterator last, T value);
      |   ^~~~~~~~~
p1252.cpp:340:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1252.cpp:344:10: error: 'input_or_output_iterator' has not been declared
  344 | template<input_or_output_iterator O, sentinel_for<O> S, weakly_incrementable T>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~
p1252.cpp:344:38: error: 'sentinel_for' has not been declared
  344 | template<input_or_output_iterator O, sentinel_for<O> S, weakly_incrementable T>
      |                                      ^~~~~~~~~~~~
p1252.cpp:344:50: error: expected '>' before '<' token
  344 | template<input_or_output_iterator O, sentinel_for<O> S, weakly_incrementable T>
      |                                                  ^
p1252.cpp:345:3: error: 'requires' does not name a type
  345 |   requires indirectly_writable<O, const T&>
      |   ^~~~~~~~
p1252.cpp:345:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1252.cpp:347:10: error: 'weakly_incrementable' has not been declared
  347 | template<weakly_incrementable T, output_range<const T&> R>
      |          ^~~~~~~~~~~~~~~~~~~~
p1252.cpp:347:34: error: 'output_range' has not been declared
  347 | template<weakly_incrementable T, output_range<const T&> R>
      |                                  ^~~~~~~~~~~~
p1252.cpp:347:46: error: expected '>' before '<' token
  347 | template<weakly_incrementable T, output_range<const T&> R>
      |                                              ^
p1252.cpp:348:3: error: 'constexpr' does not name a type
  348 |   constexpr ranges::iota_result<borrowed_iterator_t<R>, T> ranges::iota(R&& r, T value);
      |   ^~~~~~~~~
p1252.cpp:348:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1252.cpp:350:8: error: expected unqualified-id before 'while'
  350 |        while (first != last) {
      |        ^~~~~
p1252.cpp:355:8: error: expected unqualified-id before 'return'
  355 |        return {std::move(first), std::move(value)};
      |        ^~~~~~
p1252.cpp:362:3: error: 'constexpr' does not name a type
  362 |   constexpr common_type_t<M, N> gcd(M m, N n);
      |   ^~~~~~~~~
p1252.cpp:362:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1252.cpp:366:3: error: 'constexpr' does not name a type
  366 |   constexpr common_type_t<M, N> lcm(M m, N n);
      |   ^~~~~~~~~
p1252.cpp:366:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1252.cpp:372:3: error: 'constexpr' does not name a type
  372 |   constexpr T midpoint(T a, T b) noexcept;
      |   ^~~~~~~~~
p1252.cpp:372:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1252.cpp:377:3: error: 'constexpr' does not name a type
  377 |   constexpr T* midpoint(T* a, T* b);
      |   ^~~~~~~~~
p1252.cpp:377:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'

$ g++ p1252.cpp -std=2b -o p1252g -I. -Wall
p1252.cpp:32:1: error: expected unqualified-id before 'template'
   32 | template<class InputIterator>
      | ^~~~~~~~
p1252.cpp:36:1: error: expected unqualified-id before 'return'
   36 | return reduce(first, last,
      | ^~~~~~
p1252.cpp:37:75: error: expected unqualified-id before ')' token
   37 |                      typename iterator_traits<InputIterator>::value_type{});
      |                                                                           ^
p1252.cpp:38:7: error: expected constructor, destructor, or type conversion before '(' token
   38 | reduce(ExecutionPolicy&& exec,
      |       ^
p1252.cpp:41:1: error: expected unqualified-id before 'return'
   41 | return reduce(std::forward<ExecutionPolicy>(exec), first, last,
      | ^~~~~~
p1252.cpp:42:73: error: expected unqualified-id before ')' token
   42 |                  typename iterator_traits<ForwardIterator>::value_type{});
      |                                                                         ^
p1252.cpp:46:1: error: expected unqualified-id before 'return'
   46 | return reduce(first, last, init, plus<>());
      | ^~~~~~
p1252.cpp:51:1: error: expected unqualified-id before 'return'
   51 | return reduce(std::forward<ExecutionPolicy>(exec), first, last, init, plus<>());
      | ^~~~~~
p1252.cpp:69:1: error: 'T' does not name a type
   69 | T transform_reduce(ExecutionPolicy&& exec,
      | ^
p1252.cpp:93:1: error: expected unqualified-id before 'return'
   93 | return transform_reduce(first1, last1, first2, init, plus<>(), multiplies<>());
      | ^~~~~~
p1252.cpp:101:1: error: expected unqualified-id before 'return'
  101 | return transform_reduce(std::forward<ExecutionPolicy>(exec),
      | ^~~~~~
p1252.cpp:118:16: error: expected constructor, destructor, or type conversion before '(' token
  118 | GENERALIZED_SUM(binary_op1, init, binary_op2(*i, *(first2 + (i - first1))), ...) for every iterator i in [first1, last1).
      |                ^
p1252.cpp:138:42: error: expected identifier before '[' token
  138 |          class ForwardIterator, class T, [first, last].
      |                                          ^
p1252.cpp:138:43: error: 'first' was not declared in this scope
  138 |          class ForwardIterator, class T, [first, last].
      |                                           ^~~~~
p1252.cpp:138:48: error: expected ']' before ',' token
  138 |          class ForwardIterator, class T, [first, last].
      |                                                ^
      |                                                ]
p1252.cpp:138:50: error: 'last' has not been declared
  138 |          class ForwardIterator, class T, [first, last].
      |                                                  ^~~~
p1252.cpp:138:54: error: expected '>' before ']' token
  138 |          class ForwardIterator, class T, [first, last].
      |                                                      ^
p1252.cpp:138:54: error: expected unqualified-id before ']' token
p1252.cpp:153:1: error: 'ForwardIterator2' does not name a type
  153 | ForwardIterator2
      | ^~~~~~~~~~~~~~~~
p1252.cpp:163:31: error: expected constructor, destructor, or type conversion before '(' token
  163 | GENERALIZED_NONCOMMUTATIVE_SUM( binary_op, init, *(first + 0), *(first + 1), ..., *(first + K - 1))
      |                               ^
p1252.cpp:176:1: error: expected unqualified-id before 'return'
  176 | return exclusive_scan(first, last, result, init, plus<>());
      | ^~~~~~
p1252.cpp:183:1: error: expected unqualified-id before 'return'
  183 | return exclusive_scan(std::forward<ExecutionPolicy>(exec),
      | ^~~~~~
p1252.cpp:204:1: error: expected unqualified-id before 'template'
  204 | template<class InputIterator, class OutputIterator>
      | ^~~~~~~~
p1252.cpp:209:1: error: expected unqualified-id before 'return'
  209 | return inclusive_scan(first, last, result, plus<>());
      | ^~~~~~
p1252.cpp:210:15: error: expected constructor, destructor, or type conversion before '(' token
  210 | inclusive_scan(ExecutionPolicy&& exec,
      |               ^
p1252.cpp:214:1: error: expected unqualified-id before 'return'
  214 | return inclusive_scan(std::forward<ExecutionPolicy>(exec), first, last, result, plus<>());
      | ^~~~~~
p1252.cpp:231:31: error: expected constructor, destructor, or type conversion before '(' token
  231 | GENERALIZED_NONCOMMUTATIVE_SUM(
      |                               ^
p1252.cpp:267:3: error: expected 'class' or 'typename' before 'constexpr'
  267 |   constexpr OutputIterator
      |   ^~~~~~~~~
p1252.cpp:267:3: error: expected identifier before 'constexpr'
p1252.cpp:267:3: error: expected '>' before 'constexpr'
p1252.cpp:270:81: error: expected unqualified-id before ';' token
  270 |                              BinaryOperation binary_op, UnaryOperation unary_op);
      |                                                                                 ^
p1252.cpp:304:22: error: expected constructor, destructor, or type conversion before '(' token
  304 |              unary_op(*(first + 0)), unary_op(*(first + 1)), ..., unary_op(*(first + K)))
      |                      ^
p1252.cpp:346:21: error: 'iota_result' in namespace 'std::ranges' does not name a template type; did you mean 'move_result'?
  346 |   constexpr ranges::iota_result<O, T> ranges::iota(O first, S last, T value);
      |                     ^~~~~~~~~~~
      |                     move_result
p1252.cpp:347:34: error: 'output_range' has not been declared
  347 | template<weakly_incrementable T, output_range<const T&> R>
      |                                  ^~~~~~~~~~~~
p1252.cpp:347:46: error: expected '>' before '<' token
  347 | template<weakly_incrementable T, output_range<const T&> R>
      |                                              ^
p1252.cpp:348:21: error: 'iota_result' in namespace 'std::ranges' does not name a template type; did you mean 'move_result'?
  348 |   constexpr ranges::iota_result<borrowed_iterator_t<R>, T> ranges::iota(R&& r, T value);
      |                     ^~~~~~~~~~~
      |                     move_result
p1252.cpp:350:8: error: expected unqualified-id before 'while'
  350 |        while (first != last) {
      |        ^~~~~
p1252.cpp:355:8: error: expected unqualified-id before 'return'
  355 |        return {std::move(first), std::move(value)};
      |        ^~~~~~

```

## 検討事項(agenda)
コンパイルエラーを取るか、コンパイルエラーの理由を解説する。

<!-- リンクエラーの解説をする。clang++とg++の比較。意味のある出力。
コンパイルエラーを取るか、コンパイルエラーの理由を解説する。-->


## 応用例1　AUTOSAR C++
AUTOSARでC++のコーディング標準を作っている。　
MISRA-C++コーディング標準の改訂をまたずに、C++14に対応したかったためかもしれない。　

Autosar Guidelines C++14 example code compile list(1-169), 
https://qiita.com/kaizen_nagoya/items/8ccbf6675c3494d57a76

## 応用例2　MISRA C++
MISRA C++, AUTOSAR C++について
https://qiita.com/kaizen_nagoya/items/3436fbd49865e0da7d35

MISRA C++ 5-0-16
https://qiita.com/kaizen_nagoya/items/7df2d4e05db724752a74

## 応用例3 CERT C++
MISRA C/C++, AUTOSAR C++, CERT C/C++とC/C++工業標準をコンパイルする
https://qiita.com/kaizen_nagoya/items/8dff19511e42b2593db1

## 応用例4 箱庭　
箱庭ではUnityをはじめC++を使っているらしい。　

ここでコンパイルしたコードと同じようなコードを使っているか、
ここで出たコンパイルエラーと同じようなエラーがでたかを
いろいろな版のコンパイラでコンパイルして確認していく。

仮想戦略会議「箱庭」
https://qiita.com/kaizen_nagoya/items/73cb132707653176a461

お盆には「箱庭」記事を書きましょう「もくもく会」の題材になる（１）
https://qiita.com/kaizen_nagoya/items/a22bf2b1dab0ad3258d4

お盆には「箱庭」記事を書きましょう「もくもく会」の題材になる（2）
https://qiita.com/kaizen_nagoya/items/e3c0ceb2dcc9cf3f3fac

# 資料(reference)
エンジニア夏休み企画 個人開発
https://qiita.com/official-events/6d31965c499a69377c0b

## 自己参考資料(self reference)
関連する自己参照以外は、こちらの先頭に移転。

C言語（C++)に対する誤解、曲解、無理解、爽快。
https://qiita.com/kaizen_nagoya/items/3f3992c9722c1cee2e3a

#include "N4910.h"
https://qiita.com/kaizen_nagoya/items/163a47cef7d6bb1c33a8

C++N4910資料の改善点
https://qiita.com/kaizen_nagoya/items/fb4ceb5d117a54641af3

dockerにclang
https://qiita.com/kaizen_nagoya/items/8829ffeee397eda50e80

docker gnu(gcc/g++) and llvm(clang/clang++)
https://qiita.com/kaizen_nagoya/items/059874ea39c4de64c0f7

コンパイル用shell script C版(clangとgcc)とC++版(clang++とg++)
https://qiita.com/kaizen_nagoya/items/74220c0577a512c2d7da

C++N4910:2022 tag follower 300人超えました。ありがとうございます。
https://qiita.com/kaizen_nagoya/items/a63fb96d351ac5c16ff7

astyle 使ってみた
https://qiita.com/kaizen_nagoya/items/3c9a87a781d53a1a23f3

【個人開発】　効率的な背景　＜エンジニア夏休み企画＞
https://qiita.com/kaizen_nagoya/items/3ebab436e63731e4b885

<この項は書きかけです。順次追記します。>
This article is not completed. I will add some words and/or centences in order.
Este artículo no está completo. Agregaré algunas palabras en orden.

## 知人資料
' @kazuo_reve 私が効果を確認した「小川メソッド」
https://qiita.com/kazuo_reve/items/a3ea1d9171deeccc04da

' @kazuo_reve 新人の方によく展開している有益な情報
https://qiita.com/kazuo_reve/items/d1a3f0ee48e24bba38f1

' @kazuo_reve Vモデルについて勘違いしていたと思ったこと
https://qiita.com/kazuo_reve/items/46fddb094563bd9b2e1e

## 自己記事一覧
Qiitaで逆リンクを表示しなくなったような気がする。時々、スマフォで表示するとあらわっることがあり、完全に削除したのではなさそう。

４月以降、せっせとリンクリストを作り、統計を取って確率を説明しようとしている。
2025年２月末を目標にしている。

一覧の一覧( The directory of directories of mine.) Qiita(100)
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39

仮説（0）一覧（目標100現在40）
https://qiita.com/kaizen_nagoya/items/f000506fe1837b3590df

Qiita(0)Qiita関連記事一覧（自分）
https://qiita.com/kaizen_nagoya/items/58db5fbf036b28e9dfa6

Error一覧 error(0)
https://qiita.com/kaizen_nagoya/items/48b6cbc8d68eae2c42b8

C++ Support(0)　
https://qiita.com/kaizen_nagoya/items/8720d26f762369a80514

Coding(0) Rules, C, Secure, MISRA and so on
https://qiita.com/kaizen_nagoya/items/400725644a8a0e90fbb0

Ethernet 記事一覧　Ethernet(0)
https://qiita.com/kaizen_nagoya/items/88d35e99f74aefc98794

Wireshark 一覧 wireshark(0)、Ethernet(48) 
https://qiita.com/kaizen_nagoya/items/fbed841f61875c4731d0

線網（Wi-Fi）空中線(antenna)(0) 記事一覧(118/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001

なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2

プログラムちょい替え（0）一覧:4件
https://qiita.com/kaizen_nagoya/items/296d87ef4bfd516bc394

言語処理100本ノックをdockerで。python覚えるのに最適。:10+12
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4

Python(0)記事をまとめたい。
https://qiita.com/kaizen_nagoya/items/088c57d70ab6904ebb53

安全（0）安全工学シンポジウムに向けて: 21
https://qiita.com/kaizen_nagoya/items/c5d78f3def8195cb2409

プログラマによる、プログラマのための、統計(0)と確率のプログラミングとその後
https://qiita.com/kaizen_nagoya/items/6e9897eb641268766909

転職(0)一覧
https://qiita.com/kaizen_nagoya/items/f77520d378d33451d6fe

技術士(0)一覧
https://qiita.com/kaizen_nagoya/items/ce4ccf4eb9c5600b89ea

Reserchmap(0) 一覧
https://qiita.com/kaizen_nagoya/items/506c79e562f406c4257e

物理記事　上位100
https://qiita.com/kaizen_nagoya/items/66e90fe31fbe3facc6ff

量子(0) 計算機, 量子力学 
https://qiita.com/kaizen_nagoya/items/1cd954cb0eed92879fd4

数学関連記事１００
https://qiita.com/kaizen_nagoya/items/d8dadb49a6397e854c6d

coq(0) 一覧
https://qiita.com/kaizen_nagoya/items/d22f9995cf2173bc3b13

統計(0)一覧
https://qiita.com/kaizen_nagoya/items/80d3b221807e53e88aba

図(0) state, sequence and timing. UML and お絵描き 
https://qiita.com/kaizen_nagoya/items/60440a882146aeee9e8f

色(0) 記事100書く切り口 
https://qiita.com/kaizen_nagoya/items/22331c0335ed34326b9b

品質一覧 
https://qiita.com/kaizen_nagoya/items/2b99b8e9db6d94b2e971

言語・文学記事　１００
https://qiita.com/kaizen_nagoya/items/42d58d5ef7fb53c407d6

医工連携関連記事一覧
https://qiita.com/kaizen_nagoya/items/6ab51c12ba51bc260a82

水の資料集(0)　方針と成果
https://qiita.com/kaizen_nagoya/items/f5dbb30087ea732b52aa

自動車　記事　１００
https://qiita.com/kaizen_nagoya/items/f7f0b9ab36569ad409c5

通信記事１００
https://qiita.com/kaizen_nagoya/items/1d67de5e1cd207b05ef7

日本語（０）一欄
https://qiita.com/kaizen_nagoya/items/7498dcfa3a9ba7fd1e68

英語(0) 一覧
https://qiita.com/kaizen_nagoya/items/680e3f5cbf9430486c7d

音楽　一覧(0) 
https://qiita.com/kaizen_nagoya/items/b6e5f42bbfe3bbe40f5d

「@kazuo_reve 新人の方によく展開している有益な情報」確認一覧 
https://qiita.com/kaizen_nagoya/items/b9380888d1e5a042646b

鉄道（０）鉄道のシステム考察はてっちゃんがてつだってくれる
https://qiita.com/kaizen_nagoya/items/faa4ea03d91d901a618a

OSEK OS設計の基礎　OSEK(100)
https://qiita.com/kaizen_nagoya/items/7528a22a14242d2d58a3

coding (101) 一覧を作成し始めた。omake:最近のQiitaで表示しない5つの事象
https://qiita.com/kaizen_nagoya/items/20667f09f19598aedb68

官公庁・学校・公的団体（NPOを含む）システムの課題、官（０）
https://qiita.com/kaizen_nagoya/items/04ee6eaf7ec13d3af4c3

「はじめての」シリーズ　 ベクタージャパン　
https://qiita.com/kaizen_nagoya/items/2e41634f6e21a3cf74eb

AUTOSAR(0)Qiita記事一覧, OSEK(75)
https://qiita.com/kaizen_nagoya/items/89c07961b59a8754c869

プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945

LaTeX(0) 一覧　
https://qiita.com/kaizen_nagoya/items/e3f7dafacab58c499792

自動制御、制御工学一覧（０）
https://qiita.com/kaizen_nagoya/items/7767a4e19a6ae1479e6b

Rust(0) 一覧　
https://qiita.com/kaizen_nagoya/items/5e8bb080ba6ca0281927

programの本質は計画だ。programは設計だ。
https://qiita.com/kaizen_nagoya/items/c8545a769c246a458c27

登壇直後版 色使い(JIS安全色) Qiita Engineer Festa 2023〜私しか得しないニッチな技術でLT〜 スライド編 0.15
https://qiita.com/kaizen_nagoya/items/f0d3070d839f4f735b2b

プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945

逆も真：社会人が最初に確かめるとよいこと。OSEK(69)、Ethernet(59)
https://qiita.com/kaizen_nagoya/items/39afe4a728a31b903ddc

統計の嘘。仮説（127）
https://qiita.com/kaizen_nagoya/items/63b48ecf258a3471c51b

自分の言葉だけで論理展開できるのが天才なら、文章の引用だけで論理展開できるのが秀才だ。仮説（136）
https://qiita.com/kaizen_nagoya/items/97cf07b9e24f860624dd

参考文献駆動執筆(references driven writing)・デンソークリエイト編
https://qiita.com/kaizen_nagoya/items/b27b3f58b8bf265a5cd1

「何を」よりも「誰を」。１０年後のために今見習いたい人たち
https://qiita.com/kaizen_nagoya/items/8045978b16eb49d572b2

Qiitaの記事に３段階または５段階で到達するための方法
https://qiita.com/kaizen_nagoya/items/6e9298296852325adc5e

出力(output)と呼ばないで。これは状態(state)です。
https://qiita.com/kaizen_nagoya/items/80b8b5913b2748867840

祝休日・謹賀新年 2025年の目標
https://qiita.com/kaizen_nagoya/items/dfa34827932f99c59bbc

Qiita 1年間をまとめた「振り返りページ」＠2024
https://qiita.com/kaizen_nagoya/items/ed6be239119c99b15828

2024 参加・主催Calendarと投稿記事一覧 Qiita(248)
https://qiita.com/kaizen_nagoya/items/d80b8fbac2496df7827f

主催Calendar2024分析 Qiita(254)
https://qiita.com/kaizen_nagoya/items/15807336d583076f70bc

Calendar 統計
https://qiita.com/kaizen_nagoya/items/e315558dcea8ee3fe43e

LLM 関連 Calendar 2024 
https://qiita.com/kaizen_nagoya/items/c36033cf66862d5496fa

Large Language Model Related Calendar 
https://qiita.com/kaizen_nagoya/items/3beb0bc3fb71e3ae6d66

博士論文 Calendar 2024 を開催します。 
https://qiita.com/kaizen_nagoya/items/51601357efbcaf1057d0

博士論文(0)関連記事一覧
https://qiita.com/kaizen_nagoya/items/8f223a760e607b705e78

coding (101) 一覧を作成し始めた。omake:最近のQiitaで表示しない5つの事象
https://qiita.com/kaizen_nagoya/items/20667f09f19598aedb68

あなたは「勘違いまとめ」から、勘違いだと言っていることが勘違いだといくつ見つけられますか。人間の間違い(human error(125))の種類と対策
https://qiita.com/kaizen_nagoya/items/ae391b77fffb098b8fb4

プログラマの「プログラムが書ける」思い込みは強みだ。３つの理由。仮説（168）統計と確率(17) , OSEK(79)
https://qiita.com/kaizen_nagoya/items/bc5dd86e414de402ec29

出力(output)と呼ばないで。これは状態(state)です。
https://qiita.com/kaizen_nagoya/items/80b8b5913b2748867840

これからの情報伝達手段の在り方について考えてみよう。炎上と便乗。
https://qiita.com/kaizen_nagoya/items/71a09077ac195214f0db

ISO/IEC JTC1 SC7 Software and System Engineering
https://qiita.com/kaizen_nagoya/items/48b43f0f6976a078d907

アクセシビリティの知見を発信しよう！（再び）
https://qiita.com/kaizen_nagoya/items/03457eb9ee74105ee618

統計論及確率論輪講（再び）
https://qiita.com/kaizen_nagoya/items/590874ccfca988e85ea3

読者の心をグッと惹き寄せる7つの魔法
https://qiita.com/kaizen_nagoya/items/b1b5e89bd5c0a211d862

「@kazuo_reve 新人の方によく展開している有益な情報」確認一覧
https://qiita.com/kaizen_nagoya/items/b9380888d1e5a042646b

ソースコードで議論しよう。日本語で議論するの止めましょう（あるプログラミング技術の議論報告）
https://qiita.com/kaizen_nagoya/items/8b9811c80f3338c6c0b0

脳内コンパイラの3つの危険
https://qiita.com/kaizen_nagoya/items/7025cf2d7bd9f276e382

心理学の本を読むよりはコンパイラ書いた方がよくね。仮説（34）
https://qiita.com/kaizen_nagoya/items/fa715732cc148e48880e

NASAを超えるつもりがあれば読んでください。
https://qiita.com/kaizen_nagoya/items/e81669f9cb53109157f6

データサイエンティストの気づき!「勉強して仕事に役立てない人。大嫌い!!」『それ自分かも?』ってなった!!! 
https://qiita.com/kaizen_nagoya/items/d85830d58d8dd7f71d07

「ぼくの好きな先生」「人がやらないことをやれ」プログラマになるまで。仮説（37）　
https://qiita.com/kaizen_nagoya/items/53e4bded9fe5f724b3c4

なぜ経済学徒を辞め、計算機屋になったか（経済学部入学前・入学後・卒業後対応） 転職(1)  
https://qiita.com/kaizen_nagoya/items/06335a1d24c099733f64    

プログラミング言語教育のXYZ。 仮説（52） 
https://qiita.com/kaizen_nagoya/items/1950c5810fb5c0b07be4

【24卒向け】9ヶ月後に年収１０００万円を目指す。二つの関門と三つの道。
https://qiita.com/kaizen_nagoya/items/fb5bff147193f726ad25

「【25卒向け】Qiita Career Meetup for STUDENT」予習の勧め
https://qiita.com/kaizen_nagoya/items/00eadb8a6e738cb6336f

大学入試不合格でも筆記試験のない大学に入って卒業できる。卒業しなくても博士になれる。
https://qiita.com/kaizen_nagoya/items/74adec99f396d64b5fd5

全世界の不登校の子供たち「博士論文」を書こう。世界子供博士論文遠隔実践中心 安全(99)
https://qiita.com/kaizen_nagoya/items/912d69032c012bcc84f2

日本のプログラマが世界で戦える16分野。仮説(53),統計と確率(25) 転職(32)、Ethernet(58)
https://qiita.com/kaizen_nagoya/items/a7e634a996cdd02bc53b

小川メソッド　覚え（書きかけ）
https://qiita.com/kaizen_nagoya/items/3593d72eca551742df68

DoCAP（ドゥーキャップ）って何ですか？
https://qiita.com/kaizen_nagoya/items/47e0e6509ab792c43327

views 20,000越え自己記事一覧
https://qiita.com/kaizen_nagoya/items/58e8bd6450957cdecd81

Views１万越え、もうすぐ１万記事一覧 最近いいねをいただいた213記事
https://qiita.com/kaizen_nagoya/items/d2b805717a92459ce853

amazon 殿堂入りNo1レビュアになるまで。仮説(102)
https://qiita.com/kaizen_nagoya/items/83259d18921ce75a91f4

100以上いいねをいただいた記事16選
https://qiita.com/kaizen_nagoya/items/f8d958d9084ffbd15d2a

水道局10年(1976,4-1986,3)を振り返る
https://qiita.com/kaizen_nagoya/items/707fcf6fae230dd349bf

小川清最終講義、最終講義（再）計画, Ethernet(100) 英語(100) 安全(100)
https://qiita.com/kaizen_nagoya/items/e2df642e3951e35e6a53

＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞
This article is an individual impression based on my individual experience. It has nothing to do with the organization or business to which I currently belong.
Este artículo es una impresión personal basada en mi experiencia personal. No tiene nada que ver con la organización o empresa a la que pertenezco actualmente.
### 文書履歴(document history)
ver. 0.01 初稿 　20220816
### 最後までおよみいただきありがとうございました。
いいね　💚、フォローをお願いします。
#### Thank you very much for reading to the last sentence.
Please press the like icon 💚　and follow me for your happy life.
#### Muchas gracias por leer hasta la última oración.
Por favor, haz clic en el ícono Me gusta 💚 y sígueme para tener una vida feliz.