Template alias as template specialisation not recognized.
Paul Backus
snarwin at gmail.com
Sat Jan 16 01:38:38 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) {}
You have encountered issue 1807:
https://issues.dlang.org/show_bug.cgi?id=1807
The easiest way to work around it that I know of is to change
`Vec` from an alias into a struct:
struct Vec(uint size_, Type)
{
Mat!(size, 1, Type) payload;
alias payload this;
}
More information about the Digitalmars-d-learn
mailing list