On 2013-10-10 19:23, H. S. Teoh wrote:
I have a template used for storing compile-time values:template Def(int x, string y) { alias impl = TypeTuple!(x,y); } How do I define a template isDef that, given some template alias A, evaluates to true if A is some instantiation of Def? template isDef(alias A) { enum A = ... /* what to put here? */ } The intent is to be able to write signature constraints like this: auto myFunc(alias def)(...) if (isDef!def) { ... } ... // Pass an instantiation of Def to myFunc auto x = myFunc!(Def!(1, "abc"))(args); I tried using std.traits.isInstanceOf but apparently it expects the second argument to be an actual type, which doesn't work in this case because Def is a typetuple of compile-time values, not an actual type.
I found this old thread http://forum.dlang.org/thread/[email protected] With this code: template getTemplate(alias T : TI!TP, alias TI, TP...) { alias getTemplate = TI; } But I haven't figured out how to do the comparison. -- /Jacob Carlborg
