inline const type& the(const cl_number& x)
{
// check that sizeof(type)==sizeof(cl_number)
- int (*dummy1)(int assertion1 [1 - 2 * (sizeof(type) != sizeof(cl_number))]); (void)dummy1;
+ static_assert(sizeof(type)==sizeof(cl_number),
+ "sizeof(type)!=sizeof(cl_number)");
return *(const type *) &x;
}
// Conversions to subtypes without checking, macro version:
epsilon_bits=-1; y="($type)1.0"
while true; do
AC_TRY_COMPILE([],
- [typedef int verify[2*(
- (($type)(($type)1.0 + ($type)($y)) == ($type)1.0)
- || ($type)(($type)(($type)1.0 + ($type)($y)) - ($type)1.0) != ($type)($y)
- ) - 1];],
+ [static_assert((($type)(($type)1.0 + ($type)($y)) == ($type)1.0)
+ || ($type)(($type)(($type)1.0 + ($type)($y)) - ($type)1.0) != ($type)($y), "");],
[break;])
epsilon_bits=`expr $epsilon_bits + 1`; y="$y * ($type)0.5"
done
negepsilon_bits=-1; y="($type)-1.0"
while true; do
AC_TRY_COMPILE([],
- [typedef int verify[2*(
- (($type)(($type)1.0 + ($type)($y)) == ($type)1.0)
- || ($type)(($type)(($type)1.0 + ($type)($y)) - ($type)1.0) != ($type)($y)
- ) - 1];],
+ [static_assert((($type)(($type)1.0 + ($type)($y)) == ($type)1.0)
+ || ($type)(($type)(($type)1.0 + ($type)($y)) - ($type)1.0) != ($type)($y), "");],
[break;])
negepsilon_bits=`expr $negepsilon_bits + 1`; y="$y * ($type)0.5"
done
rounds=
if test -z "$rounds"; then
AC_TRY_COMPILE([],
- [typedef int verify[2*(
- $ys1 == $y1 && $ys2 == $y2 && $zs1 == $z1 && $zs2 == $z2
- ) - 1];],
+ [static_assert($ys1 == $y1 && $ys2 == $y2 && $zs1 == $z1 && $zs2 == $z2, "");],
[rounds=rounds_to_nearest])
fi
if test -z "$rounds"; then
AC_TRY_COMPILE([],
- [typedef int verify[2*(
- $ys1 == $y1 && $ys2 == $y1 && $zs1 == $z1 && $zs2 == $z1
- ) - 1];],
+ [static_assert($ys1 == $y1 && $ys2 == $y1 && $zs1 == $z1 && $zs2 == $z1, "");],
[rounds=rounds_to_zero])
fi
if test -z "$rounds"; then
AC_TRY_COMPILE([],
- [typedef int verify[2*(
- $ys1 == $y2 && $ys2 == $y2 && $zs1 == $z1 && $zs2 == $z1
- ) - 1];],
+ [static_assert($ys1 == $y2 && $ys2 == $y2 && $zs1 == $z1 && $zs2 == $z1, "");],
[rounds=rounds_to_infinity])
fi
if test -z "$rounds"; then
AC_TRY_COMPILE([],
- [typedef int verify[2*(
- $ys1 == $y1 && $ys2 == $y1 && $zs1 == $z2 && $zs2 == $z2
- ) - 1];],
+ [static_assert($ys1 == $y1 && $ys2 == $y1 && $zs1 == $z2 && $zs2 == $z2, "");],
[rounds=rounds_to_minus_infinity])
fi
if test -n "$rounds"; then
echo "#error \"Integer types long long and unsigned long long have different sizes!!\""
fi
fi
- AC_TRY_COMPILE([], [typedef int verify[2*(sizeof(char*)<=sizeof (long))-1];],
+ AC_TRY_COMPILE([], [static_assert(sizeof(char*) <= sizeof(long), "");],
[], [echo "#error \"Type char * does not fit into a long!!\""])
_AC_COMPUTE_INT([sizeof (char *)], [pointer_size])
pointer_bitsize=`expr $pointer_size '*' $char_bitsize`
[
n=1; x="($1)2"
while true; do
- AC_TRY_COMPILE([], [typedef int verify[2*(($1)($x) == 0) - 1];],
+ AC_TRY_COMPILE([], [static_assert(($1)($x) == 0, "");],
[$2=$n; break;],
[if test $n = 1000; then $2=; break; fi;])
n=`expr $n + 1`; x="$x * ($1)2"
#else
# define alignof(type) offsetof (struct { char slot1; type slot2; }, slot2)
#endif
-], [typedef int verify[2*(alignof($1) == $n) - 1];],
+], [static_assert(alignof($1) == $n, "");],
[$2=$n; break;]
[if test $n = 0; then $2=; break; fi])
n=`expr $n '*' 2`