Fun with allMembers

Shin Fujishiro rsinfu at
Thu May 14 11:55:55 PDT 2009

Another example of allMembers: Generalized selective import.
template isUnaryRealFunction(alias sym)
    enum isUnaryRealFunction = is(typeof(sym(0.L)) == real);

// import unary real functions from std.math
mixin importOnly!("std.math", isUnaryRealFunction);

// unary real functions are imported
static assert(__traits(compiles, abs, sqrt, sin));

// pow is not since it's a binary function
static assert(!__traits(compiles, pow));
Full code:

A template importOnly imports only symbols satisfying a predicate
template. I don't know if it's actually useful or not, but it shows the
potential of D's compile-time reflection. Seems we can do everything!

More information about the Digitalmars-d mailing list