Determining if a symbol is a function
Lars Kyllingstad
public at kyllingen.NOSPAMnet
Mon Apr 13 02:46:25 PDT 2009
Doctor J wrote:
> Answered my own question:
>
> static if (is(typeof(func0) == function))
> writefln("func0 is a function.");
>
> is() really wants a type, not an expression.
You say you want to test whether a struct/class member is a field or a
property. Pointers to class and struct methods are delegates, not
function pointers.
http://www.digitalmars.com/d/1.0/type.html#delegates
So the correct thing to write would be:
static if (is(typeof(func0) == delegate)) { ... }
or, to test whether func0 is a function OR a delegate,
static if (is(typeof(func0) == return)) { ... }
For details, see
http://www.digitalmars.com/d/1.0/expression.html#IsExpression
-Lars
More information about the Digitalmars-d-learn
mailing list