www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How to specify an exact template?

reply solidstate1991 <laszloszeremi outlook.com> writes:
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.
Jan 16 2021
next sibling parent reply solidstate1991 <laszloszeremi outlook.com> writes:
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
Jan 16 2021
parent reply Tove <tove fransson.se> writes:
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
Jan 16 2021
parent reply solidstate1991 <laszloszeremi outlook.com> writes:
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.
Jan 16 2021
parent Tove <tove fransson.se> writes:
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));
Jan 16 2021
prev sibling parent solidstate1991 <laszloszeremi outlook.com> writes:
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...
Jan 16 2021