On 21/09/12 21:59, Ellery Newcomer wrote:
solution is to use std.traits, but can someone explain this to me?

import std.stdio;

void main() {
     auto a = {
         writeln("hi");
     };
     pragma(msg, typeof(a)); // void function()
     pragma(msg, is(typeof(a) == delegate)); // nope!
     pragma(msg, is(typeof(a) == function)); // nope!
}


The 'function' keyword is an ugly wart in the language.  In

void function()

'function' means 'function pointer'. But in

is (X == function)

'function' means 'function'.

Which is actually pretty much useless. You always want 'function pointer'. This is the only case where "function type" still exists in the language.


Reply via email to