The OpenD Programming Language

WithNaN.hookOpBinaryRight

Defines hooks for binary operators +, -, *, /, %, ^^, &, |, ^, <<, >>, and >>> for cases where a Checked object is the right-hand side operand. If rhs == WithNaN.defaultValue!Rhs, returns WithNaN.defaultValue!(typeof(lhs + rhs)) without evaluating the operand. Otherwise, evaluates the operand. If evaluation does not overflow, returns the result. Otherwise, returns WithNaN.defaultValue!(typeof(lhs + rhs)).

struct WithNaN
static
hookOpBinaryRight
(
string x
L
R
)
(
L lhs
,
R rhs
)

Parameters

x

The operator symbol

lhs L

The left-hand side operand

rhs R

The right-hand side operand (Rhs is the first argument to Checked)

Return Value

Type: auto

If rhs != WithNaN.defaultValue!Rhs and the operator does not overflow, the function returns the same result as the built-in operator. In all other cases, returns WithNaN.defaultValue!(typeof(lhs + rhs)).

Examples

Checked!(int, WithNaN) x;
assert((1 + x).isNaN);
x = 100;
assert(!(1 + x).isNaN);

Meta