Traits是dlang其提供的洞察編譯時間信息的一部分。其中一個可用特徵是isStaticFunction
,用作__traits(isStaticFunction, fun)
。
示例代碼:
import std.traits;
template isStaticCallable(alias fun) if (isCallable!fun)
{
enum isStaticCallable = __traits(isStaticFunction, fun);
}
void main() {}
class Foo
{
static void boo() {}
void zoo() {}
}
pragma(msg, isStaticCallable!main); // note that this prints true because
// the function has no context pointer
pragma(msg, isStaticCallable!(Foo.boo)); // prints true
pragma(msg, isStaticCallable!(Foo.zoo)); // prints false
來源
2014-10-04 05:46:47
yaz