April 13, 2019 getOverloads trait doesn't work on functions | ||||
---|---|---|---|---|
| ||||
I'm trying to use:
```
__traits(getOverloads, fn)
```
But I get the error
>expected 2 arguments for getOverloads but had 1
Is there an alternative I can use?
|
April 13, 2019 Re: getOverloads trait doesn't work on functions | ||||
---|---|---|---|---|
| ||||
Posted in reply to faissaloo | 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)
|
Copyright © 1999-2021 by the D Language Foundation