On Saturday, 16 January 2021 at 01:21:24 UTC, Paul wrote:
I'm having issues when trying to use a template alias as a
template specialisation.
When using the following:
alias Vec(uint size, Type) = Mat!(size, 1, Type);
void setUniform(V : Vec!(L, bool), int L)(string name, V
value) {...}
Vec!(4, bool) a;
setUniform("test", a);
I get the following error:
template `shader.Shader.setUniform` cannot deduce function
from argument types `!()(string, Mat!(4u, 1u, bool))`,
candidates are:DUB
shader.d(43, 7): `setUniform(V : Vec!(L, bool), uint L)(string
name, V value)`
Meanwhile, when using the following, I have no issues:
void setUniform(V : Mat!(L, 1, bool), int L)(string name, V
value) {}
In this case you can use a const template parameter:
alias Vec(uint size, Type, const uint length = 1) = Mat!(size,
length, Type);
Although this is not a generic workaround for the issue mentioned.