[
https://issues.apache.org/jira/browse/STDCXX-693?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Martin Sebor updated STDCXX-693:
--------------------------------
Affects Version/s: 4.2.1
Fix Version/s: 4.3
Scheduled for 4.3.
> 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
> 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.