template <typename T, typename U> \
struct Checked##NAME##Op< \
T, U, \
typename
std::enable_if<std::is_floating_point<T>::value || \
std::is_floating_point<U>::value>
::type> { \
using result_type = typename MaxExponentPromotion<T, U>::type; \
template <typename V> \
static constexpr bool Do(T
x, U
y, V*
result) { \
using Promotion = typename MaxExponentPromotion<T, U>::type; \
const Promotion presult =
x OP y; \
if (!IsValueInRangeForNumericType<V>(presult)) \
return false; \
*
result =
static_cast<V
>(presult); \
return true; \
} \
};
GLint GLint GLint GLint GLint x