Template + alias + basic type depends on another parameter = broken?
Paul Backus
snarwin at gmail.com
Wed Feb 22 21:20:59 UTC 2023
On Wednesday, 22 February 2023 at 20:20:46 UTC, Dark Hole wrote:
> ```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.
Pretty sure this is just a bug. There are a lot of edge-case bugs
like this where template instantiation doesn't work the way it's
supposed to.
I've submitted a bug report for this on issues.dlang.org:
https://issues.dlang.org/show_bug.cgi?id=23733
More information about the Digitalmars-d-learn
mailing list