shared class A { void funcProto() { } void func(shared(FuncType) func) { } } alias typeof(&A.init.funcProto) FuncType; shared class B : A { void foo() { B* b; shared(FuncType) o = b.func = &b.bar; //auto o = b.func = &b.bar; } void bar() { } } Assertion failure: 'precedence[e->op] != PREC_zero' on line 816 in file 'expression.c' abnormal program termination Replacing "shared(FuncType) o" with "auto o" (line 20) adds additional error message: test.d(20): Error: variable test.B.foo.o voids have no value
The ICE is a duplicate of bug 4926. You're also seeing a poor error message: I've created bug 5010 for that. *** This issue has been marked as a duplicate of issue 4926 ***