[CLN-list] A silly program

Richard B. Kreckel kreckel at thep.physik.uni-mainz.de
Sat Nov 20 22:48:03 CET 2004

On Fri, 19 Nov 2004, Isidro [iso-8859-15] Cachadiña Gutiérrez wrote:
> I don't know if I'm wrong, but why are not defined elsewhere
> cln::operator-(const float , const cln::cl_R&)
> and some with double, etc. to compile this silly program.
> #include <cln/real.h>
> int main(int argc, char **argv)
> {
>   cln::cl_F a,b;
>   a=1;
>   b=1.0-a;
> }

Hmm, good question.  Did you notice that b=1-a works because there is
oerator-(int, const cl_F&)?  So, this looks like an omission to me. I'm
just wondering if it wouldn't be better to templatize the fallthrough case
after all the special integer inline helpers, like this:

template< typename T >
inline const cl_F operator+ (const T& x, const cl_F& y)
{ return cl_F(x) + y; }

and so on.  That should match anything that can be converted to cl_F,
then, in particular double and float.  I'm also wondering whether that
would be safe enough: maybe one could apply some cute traits-trick?  Or
maybe one shouldn't try to be clever and just write down the operators
in a straightfoward way since there are only two interesting cases?

Buena noche
Richard B. Kreckel

More information about the CLN-list mailing list