On Wednesday, 8 January 2020 at 00:23:48 UTC, Marcel wrote:
Hello!
I'm writing a library where under certain conditions i need all the default constructors to be disabled. I would like to tell the user why they can't instantiate the struct.
Is there a way to do that?

class Example
{
    @disable this() { pragma(msg, "not allowed..."); }
}

void main()
{
    new Example();
}

outputs:

not allowed...
/tmp/temp_7F8C65489550.d(12,5): Error: constructor `runnable.Example.this` cannot be used because it is annotated with `@disable`

Because pragma(msg) are evaluated when encountered you can use abuse them. By specification they're not allowed to modify the meaning of the program.

Reply via email to