-
Book Overview & Buying
-
Table Of Contents
D Cookbook
By :
When we handle functions by name, an important detail is left out; overloaded functions with the same name, but different arguments. How can we drill down into these overloads?
Let's execute the following steps to inspect function overloads:
Get the function name, whether from a string or by inspecting __traits(allMembers).
Use __traits(getOverloads, Aggregate, memberName) to get a list of symbols.
Inspect the symbols with a loop and is(typeof(overload)).
The code is as follows:
struct S {
void foo() {}
void foo(int a) {}
}
void main() {
import std.stdio;
foreach(overload; __traits(getOverloads, S, "foo"))
writeln(typeof(overload).stringof);
}The following is the result of the preceding code:
void() void(int a)
It doesn't hurt to call __traits(getOverloads) on a name that isn't a function. It will simply return an empty set.
The __traits(getOverloads) function works similar to __traits(getMember), which we used in the previous...
Change the font size
Change margin width
Change background colour