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 -richy. -- Richard B. Kreckel <http://www.ginac.de/~kreckel/>