Hi,

According to [1], we can use an escape hatch in D to assume purity or assume @nogc.

We use this escape hatch for 2 purposes:

1) Wrapping standard library functions that forgot the correct annotations

2) Aborting assertion mechanisms - where we don't care about @nogc or "pure" in the case that we abort the program.

-----

However, a big drawback of this escape hatch is that if it is ever used (even very indirectly) in the context of CTFE, it yields a DMD error:

Error: pointer cast from void function() @safe to void function() @nogc @safe is not supported at compile time

-----

Losing the ability to call this assertion mechanism from any function that is used in CTFE context is very problematic.

How can I work around this issue?

Should it be considered a DMD bug? Is there any reason for attribute-only delegate/function casts in CTFEe to be disallowed?

[1] http://klickverbot.at/blog/2012/05/purity-in-d/

Reply via email to