std::valarray::sum does not work correctly for udt that has nonzero default value ---------------------------------------------------------------------------------
Key: STDCXX-693 URL: https://issues.apache.org/jira/browse/STDCXX-693 Project: C++ Standard Library Issue Type: Bug Components: 26. Numerics Affects Versions: 4.2.0 Reporter: Travis Vitek Priority: Minor #include <cassert> #include <valarray> struct S { // this ctor should not be required S () : value (21) { } S (int v) : value (v) { } S (const S& rhs) : value (rhs.value) { } S& operator+= (const S& rhs) { value += rhs.value; return *this; } int value; }; int main () { const std::valarray<S> b (S (10), 1); // 10 elements with value 1 assert (b.sum ().value == 10); return 0; } The wording in the standard seems to imply that the returned value should be a copy of one of the elements, and that op+= should be called on all of the other elements. If this is the case, then this an additional issue that would be detectable in user code [the user can count how many times the op+= is invoked]. This issue may apply to the min() and max() methods as well. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.