you could just document that no one should ever use its init value explicitly, and that they will have bugs if they do
You also create a static init member marked @disable: struct S { @disable this(); @disable static S init(); }This will give sensible error messages anywhere .init is being used. Now, Phobos and other libraries might expect that .init is always working, so this could potentially be a problem.