I tried writing a template function that detects function pointer types but it
does not work for function marked wiht any extern qualifier.
I tried around but couldn't find a way to make it work.
Any suggestions on this?

template isFunctionPointer(T){
        pragma(msg,T);
        static if(is(T VAR == RET function(ARGS),RET,ARGS...)){
                enum bool isFunctionPointer = true;
        }
        else {
                enum bool isFunctionPointer = false;
        }
}

alias void function() func1;
extern(C) alias void function() func2;
extern(Windows) alias void function() func3;
extern(C++) alias void function() func4;

pragma(msg,isFunctionPointer!(func1)); //true
pragma(msg,isFunctionPointer!(func2)); //false
pragma(msg,isFunctionPointer!(func3)); //false
pragma(msg,isFunctionPointer!(func4)); //false

void main(string[] args){
}

Kind Regards
Benjamin Thaut

Reply via email to