valarray<double>::operator%() not working

Gabriel Dos Reis gdr@codesourcery.com
Fri Feb 22 10:58:00 GMT 2002


Lance Olav Eastgate <lance@ccmr.cornell.edu> writes:

| When I try to use the binary operator% or operator%= with valarray<double>
| this doesn't work (in gcc 3.0.2). The reason, as far as I understand, is
| that operator% is only defined for integers.

Right.

|  The element-by-element
| modulus in _DEFINE_ARRAY_FUNCTION (in valarray_array.h, line 419, gcc
| 3.0.2) thus doesn't work when _Tp is a double. Thus for two doubles or
| floats, std::fmod (or similar) needs to be used.

But valarray<double> isn't intended to be operand of operator%.

You might want to use function objects and the member function
valarray<>::apply() to get the effect you want.

| Perhaps the operator% etc could be overloaded to take two doubles?

That is impossible -- operator overloading works only for user-defined
types (or types "derived" from them).

-- Gaby



More information about the Libstdc++ mailing list