Template + alias + basic type depends on another parameter = broken?

Dark Hole dark.hole1 at yandex.ru
Wed Feb 22 20:20:46 UTC 2023


I'm trying to rewrite really old D code. There was fragment like 
that:
```d
template Foo(T, T[] Array) {
     // ...
}
// ...
Bar[] arr;
Foo!(Bar, arr);
```

This gives error `can't read arr in compile time`. Small changes:
```d
template Foo(T, alias T[] Array) {
     // ...
}
// ...
Bar[] arr;
Foo!(Bar, arr);
```

This is valid D, but it doesn't work. It gives error "Error: 
template instance `Foo!(Bar, arr)` does not match template 
declaration `Foo(T, alias T[] Array)`".

Of course, there is some ways to avoid this error (e.g. check 
Array type in if), but I don't undestand why this code doesn't 
compiles.


More information about the Digitalmars-d-learn mailing list