digitalmars.D.bugs - Other weird template alias bug
- Andy Friesen (37/37) Jun 23 2004 The following code recurses (printing 'int' over and over) until the
The following code recurses (printing 'int' over and over) until the
stack overflows:
struct Empty;
template TypeList(T, R) {
struct TypeList {
alias T Type;
alias R Rest;
}
}
template Blah(A, alias B, alias C) {
void Blah() {
typeid(C.Type).print();
.Blah!(A, B, C.Rest)();
}
}
template Blah(A, alias B, C : Empty) {
void Blah() {
printf("Empty!\n");
}
}
alias TypeList!(int, TypeList!(float, TypeList!(char, Empty))) TL;
int main() {
Blah!(Empty, main, TL)();
return 0;
}
Changing the definition of TypeList to:
template TypeList(T, R) {
alias T Type;
alias R Rest;
}
Causes an illegal operation and the error messages:
template instance TypeList!(float,TypeList_aS6ttest25Empty) does not
match any template declaration
template instance TypeList!(float,TypeList_aS6ttest25Empty) cannot
resolve forward reference
(that's it for now. Honest)
-- andy
Jun 23 2004








Andy Friesen <andy ikagames.com>