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 opCalldefined. | 
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 @safefunctions.
- 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-2022 by the D Language Foundation | Page generated by ddox.