digitalmars.D.learn - Runtime templates
- John C (27/27) May 13 2006 Any ideas how to do the following at runtime with local variables?
Any ideas how to do the following at runtime with local variables? enum Type { Void, Int, String } template getType(Type value) { static if (value == Type.Int) alias int getType; else static if (value == Type.String) alias char[] getType; else alias void getType; } template makeDelegate(Type R, Type T1 = Type.Void, Type T2 = Type.Void) { static if (T2 != Type.Void) alias getType!(R) delegate(getType!(T1), getType!(T2)) makeDelegate; else static if (T1 != Type.Void) alias getType!(R) delegate(getType!(T1)) makeDelegate; else alias getType!(R) delegate() makeDelegate; } void main() { Type retType = /* call some function that returns a Type /*; Type paramType1 = /* ditto */; alias makeDelegate!(retType, paramType1) TypedDelegate; } Of course, this won't work because you can't use local variables as template arguments. Any possible workarounds, apart from passing compile-time constants? John.
May 13 2006