问一个元编程问题

ahadf 2007-10-10
有没有办法能检测出是否某个类已经mixin某个template呢?
例如:
template enable_sth(){}
class A{
  mixin enable_sth!();
}
class B:A{
  mixin enable_sth!();//重复了,有没有办法判断出超类中已经mixin了这个模块?
}
oldrev 2007-10-10
一个笨办法,用我写的那个 HasMember 模板:
import std.stdio;

template HasMember(T, string member) 
{  
    const bool HasMember =   
        is(typeof(mixin("T." ~ member)));  
}  

template Mixable()
{
	struct MixableTag;
}

class Base
{
	mixin Mixable;
}

class Foo : Base
{

	static if(HasMember!(typeof(this), "MixableTag"))
	{
		pragma(msg, "Say hello to Mixable!");
	}

}

void main()
{
}


GDC 0.24 编译通过
ahadf 2007-10-10
哦,谢谢。问一下,可预见的将来,D有没有加入类似concept特性的意向?
oldrev 2007-10-10
最近应该是不会有,等 C++ 实验实验再加也不迟嘛
Global site tag (gtag.js) - Google Analytics