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.

Reply via email to