I think nothrow invariant should be enforced only when it is necessary.

```d
class C1 { void foo(){}  invariant(){} }  // nothrow invariant is not necessary
class C2 { void foo1(){}  void foo2(){}  invariant(){} }  // same

class C3 { void foo1(){}  nothrow void foo2(){}  invariant(){} }  // invariant should be nothrow
```

Compiler should raise an error only for C3.