getOverloads trait doesn't work on functions

Adam D. Ruppe destructionator at gmail.com
Sat Apr 13 23:22:19 UTC 2019


On Saturday, 13 April 2019 at 19:02:42 UTC, faissaloo wrote:
> I'm trying to use:
> ```
> __traits(getOverloads, fn)
> ```
> But I get the error
>
>>expected 2 arguments for getOverloads but had 1

It expects the parent and the name rather than an instance of the 
function.

Try

__traits(getOverloads, __traits(parent, fn), __traits(identifier, 
fn));


Which is just long-hand for like

__traits(getOverloads, mymodule.name, "fn")

So, for example:

---
void fn() {}
void fn(int) {}
void fn(string) {}

void main() {
	foreach(overload; __traits(getOverloads, __traits(parent, fn), 
__traits(identifier, fn))) {
		pragma(msg, typeof(overload));
	}
}
---

$ dmd refl
void()
void(int _param_0)
void(string _param_0)


More information about the Digitalmars-d-learn mailing list