Travis Vitek (JIRA)
Thu, 10 Jan 2008 14:07:57 -0800
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.