[ https://issues.apache.org/jira/browse/STDCXX-693?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Martin Sebor reassigned STDCXX-693: ----------------------------------- Assignee: Martin Sebor > 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, 4.2.1 > Reporter: Travis Vitek > Assignee: Martin Sebor > Priority: Minor > Fix For: 4.3 > > > #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.