On 06/09/2015 06:27 PM, "Marc =?UTF-8?B?U2Now7x0eiI=?= <schue...@gmx.net>" wrote:
On Tuesday, 9 June 2015 at 15:49:07 UTC, Timon Gehr wrote:
On 06/09/2015 02:28 PM, "Marc =?UTF-8?B?U2Now7x0eiI=?=
<schue...@gmx.net>" wrote:
On Tuesday, 9 June 2015 at 11:47:49 UTC, Kagamin wrote:
On Tuesday, 9 June 2015 at 10:48:22 UTC, Marc Schütz wrote:
static assert() is your friend in this case

The point is that in D you don't need to express ctfe guarantee at
all. It just works.

Huh? As I understood you, you asked for a guarantee that a function is
CTFEable, in order to "not break other people's code". static assert()
gives you that:

    static assert(__traits(compiles, { enum dummy = myFunction(); }));

What if you don't support it, but it works by accident?

If you don't want to support it, why _would_ you put the static assert()
in? Or do you mean something else?

Basically, the scenario that *lack* of constexpr is able to successfully avoid by default is that you write a function that just so happens to work in CTFE but doesn't in the next release, and your dependencies break (in D you'd need to add an explicit if(__ctfe) assert(0), or similar.) I.e. lack of constexpr is a kind of enforced documentation. Anyway, I don't think this is worth the additional trouble.

Reply via email to