forked from boostorg/fusion
fix for #2355: discrepancy between std::accumulate and fusion::accumulate
[SVN r57125]
This commit is contained in:
@ -62,7 +62,7 @@ a sequence repeatedly applying an operation to its elements.
|
||||
[section fold]
|
||||
|
||||
[heading Description]
|
||||
For a sequence `Seq`, initial state, and binary function object or function pointer `f`, fold repeatedly applies binary `f` to each element of `Seq` and the previous state.
|
||||
For a sequence `seq`, initial state `initial_state`, and binary function object or function pointer `f`, fold returns the result of the repeated application of binary `f` to the result of the previous `f` invocation (`inital_state` if it is the first call) and each element of `seq`.
|
||||
|
||||
[heading Synopsis]
|
||||
template<
|
||||
@ -75,9 +75,9 @@ For a sequence `Seq`, initial state, and binary function object or function poin
|
||||
|
||||
[table Parameters
|
||||
[[Parameter][Requirement][Description]]
|
||||
[[`seq`][A model of __forward_sequence__,`f(e,s)` must be a valid expression for each element `e` in `seq`, and current state `s`][Operation's argument]]
|
||||
[[`seq`][A model of __forward_sequence__, `f(s,e)` must be a valid expression for current state `s`, and each element `e` in `seq`][Operation's argument]]
|
||||
[[`initial_state`][Any type][Initial state]]
|
||||
[[`f`][`__boost_result_of_call__<F(E,S)>::type` is the return type of `f(e,s)` for each element `e` of type `E` in `seq`, and current state `s` of type `S`][Operation's argument]]
|
||||
[[`f`][`__boost_result_of_call__<F(S,E)>::type` is the return type of `f(s,e)` current state `s` of type `S`, and for each element `e` of type `E` in `seq`][Operation's argument]]
|
||||
]
|
||||
|
||||
[heading Expression Semantics]
|
||||
@ -85,7 +85,7 @@ For a sequence `Seq`, initial state, and binary function object or function poin
|
||||
|
||||
[*Return type]: Any type
|
||||
|
||||
[*Semantics]: Equivalent to `f(eN ....f(e2,f(e1,initial_state)))` where `e1 ...eN` are the elements of `seq`.
|
||||
[*Semantics]: Equivalent to `f(... f(f(initial_state,e1),e2) ...eN)` where `e1 ...eN` are the elements of `seq`.
|
||||
|
||||
[heading Complexity]
|
||||
Linear, exactly `__result_of_size__<Sequence>::value` applications of `f`.
|
||||
@ -101,7 +101,7 @@ Linear, exactly `__result_of_size__<Sequence>::value` applications of `f`.
|
||||
typedef std::string result_type;
|
||||
|
||||
template<typename T>
|
||||
std::string operator()(const T& t, const std::string& str) const
|
||||
std::string operator()(const std::string& str, const T& t) const
|
||||
{
|
||||
return str + boost::lexical_cast<std::string>(t);
|
||||
}
|
||||
@ -115,7 +115,7 @@ Linear, exactly `__result_of_size__<Sequence>::value` applications of `f`.
|
||||
[section accumulate]
|
||||
|
||||
[heading Description]
|
||||
For a sequence `Seq`, initial state, and binary function object or function pointer `f`, accumulate repeatedly applies binary `f` to each element of `Seq` and the previous state.
|
||||
For a sequence `seq`, initial state `initial_state`, and binary function object or function pointer `f`, accumulate returns the result of the repeated application of binary `f` to the result of the previous `f` invocation (`inital_state` if it is the first call) and each element of `seq`.
|
||||
|
||||
[heading Synopsis]
|
||||
template<
|
||||
@ -128,9 +128,9 @@ For a sequence `Seq`, initial state, and binary function object or function poin
|
||||
|
||||
[table Parameters
|
||||
[[Parameter][Requirement][Description]]
|
||||
[[`seq`][A model of __forward_sequence__, `f(eN ....f(e2,f(e1,initial_state)))` must be a valid expression for each element `e1` to `eN` in `seq`][Operation's argument]]
|
||||
[[`seq`][A model of __forward_sequence__, `f(s,e)` must be a valid expression for current state `s`, and each element `e` in `seq`][Operation's argument]]
|
||||
[[`initial_state`][Any type][Initial state]]
|
||||
[[`f`][`__boost_result_of_call__<F(E,S)>::type` is the return type of `f(e,s)` for each element `e` of type `E` in `seq`, and current state `s` of type `S`][Operation's argument]]
|
||||
[[`f`][`__boost_result_of_call__<F(S,E)>::type` is the return type of `f(s,e)` current state `s` of type `S`, and for each element `e` of type `E` in `seq`][Operation's argument]]
|
||||
]
|
||||
|
||||
[heading Expression Semantics]
|
||||
@ -138,7 +138,7 @@ For a sequence `Seq`, initial state, and binary function object or function poin
|
||||
|
||||
[*Return type]: Any type
|
||||
|
||||
[*Semantics]: Equivalent to `f(eN ....f(e2,f(e1,initial_state)))` where `e1 ...eN` are the elements of `seq`.
|
||||
[*Semantics]: Equivalent to `f(... f(f(initial_state,e1),e2) ...eN)` where `e1 ...eN` are the elements of `seq`.
|
||||
|
||||
[heading Complexity]
|
||||
Linear, exactly `__result_of_size__<Sequence>::value` applications of `f`.
|
||||
@ -154,7 +154,7 @@ Linear, exactly `__result_of_size__<Sequence>::value` applications of `f`.
|
||||
typedef std::string result_type;
|
||||
|
||||
template<typename T>
|
||||
std::string operator()(const T& t, const std::string& str) const
|
||||
std::string operator()(const std::string& str, const T& t) const
|
||||
{
|
||||
return str + boost::lexical_cast<std::string>(t);
|
||||
}
|
||||
@ -238,7 +238,7 @@ Returns the result type of __fold__.
|
||||
[[Parameter] [Requirement] [Description]]
|
||||
[[`Sequence`] [A model of __forward_sequence__] [The sequence to iterate]]
|
||||
[[`State`] [Any type] [The initial state for the first application of `F`]]
|
||||
[[`F`] [`__boost_result_of_call__<F(E,S)>::type` is the return type of `f(e,s)` for each element `e` of type `E` in `seq`, and current state `s` of type `S`] [The operation to be applied on forward traversal]]
|
||||
[[`F`] [`__boost_result_of_call__<F(S,E)>::type` is the return type of `f(s,e)` for current state `s` of type `S`, and for each element `e` of type `E` in `seq`] [The operation to be applied on forward traversal]]
|
||||
]
|
||||
|
||||
[heading Expression Semantics]
|
||||
@ -278,7 +278,7 @@ Returns the result type of __accumulate__.
|
||||
[[Parameter] [Requirement] [Description]]
|
||||
[[`Sequence`] [A model of __forward_sequence__] [The sequence to iterate]]
|
||||
[[`State`] [Any type] [The initial state for the first application of `F`]]
|
||||
[[`F`] [`__boost_result_of_call__<F(E,S)>::type` is the return type of `f(e,s)` for each element `e` of type `E` in `seq`, and current state `s` of type `S`] [The operation to be applied on forward traversal]]
|
||||
[[`F`] [`__boost_result_of_call__<F(S,E)>::type` is the return type of `f(s,e)` for current state `s` of type `S`, and for each element `e` of type `E` in `seq`] [The operation to be applied on forward traversal]]
|
||||
]
|
||||
|
||||
[heading Expression Semantics]
|
||||
|
Reference in New Issue
Block a user