Thread overview
How to specify an exact template?
Jan 16
Tove
Jan 16
Tove
January 16
Here's the following line, among many others:

return &alphaBlend32bitMV!(ubyte);

This generates an error, as this function template matches two instances, but currently I don't know how to choose the one I need, other than write a local function, that looks a bit ugly.
January 16
On Saturday, 16 January 2021 at 14:13:29 UTC, solidstate1991 wrote:
> Here's the following line, among many others:
>
> return &alphaBlend32bitMV!(ubyte);
>
> This generates an error, as this function template matches two instances, but currently I don't know how to choose the one I need, other than write a local function, that looks a bit ugly.

Forgot to link the code example: https://github.com/ZILtoid1991/pixelperfectengine/blob/master/pixeperfectengine/src/PixelPerfectEngine/graphics/layers/base.d#L143
January 16
On Saturday, 16 January 2021 at 14:14:57 UTC, solidstate1991 wrote:
> On Saturday, 16 January 2021 at 14:13:29 UTC, solidstate1991 wrote:
>> Here's the following line, among many others:
>>
>> return &alphaBlend32bitMV!(ubyte);
>>
>> This generates an error, as this function template matches two instances, but currently I don't know how to choose the one I need, other than write a local function, that looks a bit ugly.
>
> Forgot to link the code example: https://github.com/ZILtoid1991/pixelperfectengine/blob/master/pixeperfectengine/src/PixelPerfectEngine/graphics/layers/base.d#L143

probably you can use https://dlang.org/spec/traits.html#getOverloads

January 16
On Saturday, 16 January 2021 at 14:18:55 UTC, Tove wrote:
> probably you can use https://dlang.org/spec/traits.html#getOverloads

I don't know how to use it with functions outside of structs/classes.
January 16
On Saturday, 16 January 2021 at 15:41:38 UTC, solidstate1991 wrote:
> On Saturday, 16 January 2021 at 14:18:55 UTC, Tove wrote:
>> probably you can use https://dlang.org/spec/traits.html#getOverloads
>
> I don't know how to use it with functions outside of structs/classes.

void foo() {}
void foo(string i) {}

static foreach(overload; __traits(getOverloads, mixin(__MODULE__), "foo"))
    pragma(msg, typeof(overload));
January 16
Well, it's quite complicated to do. I have to manually unwrap each and all function template, then pray for the compile-time optimization gods that they'll be inlined.

This is so annoying, that I might issue a DIP...