On Saturday, 19 March 2022 at 11:47:53 UTC, Stanislav Blinov wrote:

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.


Reply via email to