/** TEST_OUTPUT: --- fail_compilation/tolvalue.d(28): Error: cannot take address of template `templateFunc(T)()`, perhaps instantiate it first fail_compilation/tolvalue.d(29): Error: cannot take address of type `int` fail_compilation/tolvalue.d(30): Error: cannot take address of constant `3` fail_compilation/tolvalue.d(31): Error: cannot take address of operator `$` fail_compilation/tolvalue.d(32): Error: cannot take address of compiler-generated variable `__ctfe` fail_compilation/tolvalue.d(33): Error: cannot take address of manifest constant `f` fail_compilation/tolvalue.d(38): Error: cannot create default argument for `ref` / `out` parameter from constant `3` fail_compilation/tolvalue.d(39): Error: cannot create default argument for `ref` / `out` parameter from compiler-generated variable `__ctfe` fail_compilation/tolvalue.d(40): Error: cannot create default argument for `ref` / `out` parameter from manifest constant `f` fail_compilation/tolvalue.d(45): Error: cannot modify constant `3` fail_compilation/tolvalue.d(46): Error: cannot modify compiler-generated variable `__ctfe` fail_compilation/tolvalue.d(47): Error: cannot modify manifest constant `f` --- */ // https://issues.dlang.org/show_bug.cgi?id=24238 void templateFunc(T)() {} alias intAlias = int; enum E { f } void addr() { int[] a; auto x0 = &templateFunc; auto x1 = &intAlias; auto x2 = &3; auto x3 = a[&$]; auto x4 = &__ctfe; auto x6 = &E.f; } void refArg() { void f0(ref int = 3) {} void f1(ref bool = __ctfe) {} void f3(ref E = E.f) {} } void inc(int lz) { 3++; __ctfe++; E.f++; }