function is not function

bearophile bearophileHUGS at lycos.com
Fri Sep 21 13:22:29 PDT 2012


Ellery Newcomer:

>> pragma(msg, typeof(a)); // void function()

Maybe pragma(msg) needs to print function pointer types with a 
"*", to help remember it's a pointer:

int foo1() pure nothrow @safe { return 0; }
void main() {
     static assert(is(typeof(foo1) == function));
     auto foo2 = { return 0; };
     static assert(is(typeof(*foo2) == function));
     pragma(msg, typeof(foo1));
     pragma(msg, typeof(foo2));
}


Prints:

pure nothrow @safe int()
int function() pure nothrow @safe

 From such printout I am not able to tell the first one is a 
function type and the second is the type of a function pointer :-(

Bye,
bearophile


More information about the Digitalmars-d-learn mailing list