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.