On Monday, 5 August 2013 at 17:13:52 UTC, Dicebot wrote:
On Monday, 5 August 2013 at 16:50:12 UTC, monarch_dodra wrote:
On Monday, 5 August 2013 at 14:02:06 UTC, Dicebot wrote:
Use case?
The use case is simply checking that your functions can be
CTFE'd, and that they produce the correct result.
Considering your, example, you can always do `static
assert(to!string(1uL << 62) == "4611686018427387904");`
What is the crucial difference?
Well, the "crucial" difference is that this tests a single
expression, and not an entire block. For example, the simple test
that int.init is 0:
static assert({int i; assert(i == 0;});
This doesn't work. You'd have to write:
static assert({int i; assert(i == 0; return 1;}());
or
static assert({int i; assert(i == 0);}(), 1);
Both of which are a bit combersome. "assertCTFEable" allows
testing that the *block* will actually will compile and ctfe run
conveniently.