Runtime templates
John C
johnch_atms at hotmail.com
Sat May 13 07:56:20 PDT 2006
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.
More information about the Digitalmars-d-learn
mailing list