https://issues.dlang.org/show_bug.cgi?id=13474 --- Comment #6 from Илья Ярошенко <ilyayaroshenko at gmail.com> --- F foo(F)(F c, F d) { c += d; c += d; return c; } void test1() { alias F = double; enum F d = (cast(F)(2)) ^^ (F.max_exp - 1); assert(foo(-d, d) == d); } --