Just as a random jumpin. Couldn't this be worked around with something like this:
struct Foo { @disable this(); private this(int x) { /* init */ } } auto foo() { return Foo(0); }You basicly just hides the weird int x constructor and still disallows default construction. I guess would not be desirable with mutexes being locked and unlocked but for most else it should be good enough I guess.