On Saturday, 8 July 2017 at 12:17:57 UTC, Andrei Alexandrescu
wrote:
struct None
{
@disable this();
@disable this(this);
@disable @property None init();
}
None ThisFunctionExits();
The compiler detects (without having anything hardwired about
the particular type "None") that the type None is impossible to
create and copy/move from a function, and therefore decrees the
function will never return.
That's a lot more complex (for the compiler and to explain) than
using a simple magic @noreturn attribute.
Agreed that this is rarely needed but sometimes nice to have. Far
from being important though ;).