On Monday, 11 January 2021 at 03:40:41 UTC, Paul wrote:
On Monday, 11 January 2021 at 00:48:49 UTC, Steven Schveighoffer wrote:
I would think though, that this should work:

T opCast(T : Vec!(vecsize, S), S)()

Oh wouw, this seems to work perfectly! Awesome thanks ^^

Any Idea why
T opCast(T, S)() const if (is(T : Vec!(grootte, S))) {
yields the error
template instance opCast!(Vec!(2, double)) does not match template declaration opCast(T, S)()
while your suggestion does not? It seems to me it should match equally well.

The compiler does not look at template constraints until after it figures out what all the template arguments are. So, in your version, it sees

    T opCast(T, S) // ...
    opCast!(Vec!(2, double))

...and is able to deduce that `T = Vec!(2, double)`, but doesn't have any way to figure out what `S` is, so it gives up.

Reply via email to