View source code
Display the source code in std/functional.d from which this
page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a
Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Function std.functional.toDelegate
Convert a callable to a delegate with the same parameter list and return type, avoiding heap allocations and use of auxiliary storage.
auto auto toDelegate(F)
(
auto ref F fp
)
if (isCallable!F);
Parameters
Name | Description |
---|---|
fp | a function pointer or an aggregate type with opCall defined. |
Returns
A delegate with the context pointer pointing to nothing.
Example
void doStuff() {
writeln("Hello, world.");
}
void runDelegate(void delegate() myDelegate) {
myDelegate();
}
auto delegateToPass = toDelegate(&doStuff);
runDelegate(delegateToPass); // Calls doStuff, prints "Hello, world."
BUGS
- Does not work with
@safe
functions. - Ignores C-style / D-style variadic arguments.
Example
static int inc(ref uint num) {
num++;
return 8675309;
}
uint myNum = 0;
auto incMyNumDel = toDelegate(&inc);
auto returnVal = incMyNumDel(myNum);
writeln(myNum); // 1
Authors
License
Copyright © 1999-2018 by the D Language Foundation | Page generated by ddox.