Because normal function can throw `Exception` on default.
Some D users will surely imagine an `invariant` as a special function, that is implicitly called at the start and the end of public member functions. For them, implicit nothrow enforcement for invariant may be unacceptable behavior.

I don't say that current this change is essentially wrong, but I'm much worried that a built-in language semantics will reject system programming, especially if it requires runtime overhead. We should become very very carefully to add such runtime behavior.