Template alias as template specialisation not recognized.
Basile B.
b2.temp at gmx.com
Sat Jan 16 02:34:55 UTC 2021
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.
More information about the Digitalmars-d-learn
mailing list