7 output foo: 1e: pure nothrow @nogc @safe void(int x)
8 output foo: 3e: pure nothrow @nogc @safe void(int x)
12 alias void function(int) pure nothrow @safe @nogc FuncPtrType;
20 // module level declaration with type inference
21 auto fptr1 = &foo1a!int;
22 static assert(is(typeof(fptr1) == FuncPtrType));
25 auto fptrlist1 = [&foo1b!int];
26 static assert(is(typeof(fptrlist1) == FuncPtrType[]));
29 static assert(is(typeof(&foo1c!int) == FuncPtrType));
32 static if(is(typeof(&foo1d!int) PF))
33 static assert(is(PF == FuncPtrType));
38 pragma(msg, "output foo: 1e: ", typeof(foo1e!int).stringof);
44 FuncPtrType fptr3 = &foo2a!int; // most similar to original issue
46 FuncPtrType[] fptrlist3 = [&foo2b!int];
48 struct S{ FuncPtrType fp; }
59 auto fptr2 = &foo3a!int;
60 static assert(is(typeof(fptr2) == FuncPtrType));
62 auto fptrlist2 = [&foo3b!int];
63 static assert(is(typeof(fptrlist2) == FuncPtrType[]));
65 static assert(is(typeof(&foo1c!int) == FuncPtrType));
67 static if(is(typeof(&foo1d!int) PF))
68 static assert(is(PF == FuncPtrType));
72 pragma(msg, "output foo: 3e: ", typeof(foo3e!int));