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








John C <johnch_atms hotmail.com>