On Wednesday, 20 July 2016 at 01:14:05 UTC, mogu wrote:
Why S's type isn't something like `S: (T) -> S`?

Because S isn't a type... think of a template as being like a function that returns a type.

int foo(int) { return 0; }

There, you wouldn't expect typeof(foo) to be int, no, typeof(foo) is a function that returns an int.

The template is the same thing - it isn't a type, it is a template that returns a type.

Reply via email to