diff --git a/reference/algorithm/ranges_fold_left.md b/reference/algorithm/ranges_fold_left.md index da22186c13..7ddff23b74 100644 --- a/reference/algorithm/ranges_fold_left.md +++ b/reference/algorithm/ranges_fold_left.md @@ -52,8 +52,8 @@ namespace std::ranges { - `r` -- 入力範囲のオブジェクト - `init` -- 初期値 - `f` -- 適用する二項演算 - - `f(std::move(init), *first)`のような呼び出しが可能であり、その戻り値型を`U`とすると - - `f(std::declval(), *first)`のような呼び出しも可能である必要がある + - `f(std::move(init), *first)`のような呼び出しが可能であり、その戻り値型のオブジェクトを`acc`とすると + - `f(std::move(acc), *first)`のような呼び出しも可能である必要がある ## テンプレートパラメータ制約 @@ -62,13 +62,16 @@ namespace std::ranges { ```cpp template concept indirectly-binary-left-foldable-impl = - movable && movable && - convertible_to && invocable> && + movable && + movable && + convertible_to && + invocable> && assignable_from>>; template concept indirectly-binary-left-foldable = - copy_constructible && indirectly_readable && + copy_constructible && + indirectly_readable && invocable> && convertible_to>, decay_t>>> && @@ -85,6 +88,10 @@ concept indirectly-binary-left-foldable = * invoke_result_t[link /reference/type_traits/invoke_result.md] * decay_t[link /reference/type_traits/decay.md] +ここでのテンプレートパラメータはそれぞれ、二項演算を指定する呼出可能な型`F`、初期値の型`T`、イテレータ型`I`、戻り値型(積算値の型)`U`である。 + +二項演算(`F`)は初期値・積算値と入力範囲の参照型に対して[`invocable`](/reference/concepts/invocable.md)であることしか求められていない(`regular_invocable`ではない)ため、適用する二項演算は任意の副作用を伴っていても良い。 + ## 戻り値 - (1) : 以下と等価