19 Oct
2006
19 Oct
'06
8:03 p.m.
Hello, Sheplyakov Alexei wrote:
how do I check if the variable of cl_I type can be converted to int (or any other built-in integer type[s])?
Did you try explicit bound checking? Something like this: #include <limits.h> static cl_I INT_MAX_I = (cl_I)(long)INT_MAX; static cl_I INT_MIN_I = (cl_I)(long)INT_MIN; static cl_I UINT_MAX_I = (cl_I)(unsigned long)UINT_MAX; static bool fits_in_int (const cl_I& x) { return x >= INT_MIN_I && x <= INT_MAX_I; } static bool fits_in_uint (const cl_I& x) { return !minusp(x) && x <= UINT_MAX_I; } The purpose of the casts to 'long' and 'unsigned long' above is explained in the manual, section "Conversions". Bruno