Help needed to learn templates

Vinod K Chandran kcvinu82 at
Sat Mar 19 13:38:42 UTC 2022

On Saturday, 19 March 2022 at 11:47:53 UTC, Stanislav Blinov 
> No.
First of all Thanks for the reply. The answer "No" is a wonder to 
me. Because, from my point of view, `U` is coming from nowhere. 
My understanding is, we can use any parameter of a template 
inside the template. So in this case `U` is not in the parameter 
list. It is suddenly appearing in that `static if`.

> The test is not `T t == U[]`. It is `is(T t == U[], U)`.
Okay, I understand.

> Actually, the lower case `t` is not needed there, you can 
> simply write `is(T == U[], U)`.
So the `T` is not the type. It's the parameter. Right ? So a 
template doesn't need a type. Only the parameter, right ? (I 
think I am too dumb to ask this. Please forgive me.)

> Yes, and `U` then becomes `int[][]`. Which is why the template 
> recurses down and instantiates itself with `U`, until `T` fails 
> the test.
In order to understand this, I need to understand from where the 
`U` comes.

More information about the Digitalmars-d-learn mailing list