Equivalent of C++ std::function
Mike Parker via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Jun 24 18:45:26 PDT 2014
On 6/25/2014 10:10 AM, Yuushi wrote:
> I was wondering if D had something akin to std::function in C++.
>
> Say I have some functions in an associative array, for example:
>
> auto mapping = ['!' : (string a) => toUpper!string(a), '^' :
> (string a) => capitalize!string(a)];
>
> What I want to do is basically declare something like:
>
> function string(string) transform;
> if(<some condition>) {
> transform = mapping[<lookup>];
> }
>
> In C++, this could be done by declaring:
>
> std::function<string(string)> transform;
>
> Is there an equivalent D construct for this?
For function pointers (free functions or static class functions):
alias TransformFunc = string function( string );
TransformFunc transform;
if( foo ) transform = &func;
For delegates (lambdas or pointers to class methods or inner functions):
alias TransformDg = string delegate( string );
TransformDG transform;
if( foo ) transform = &bar.method;
---
This email is free from viruses and malware because avast! Antivirus protection is active.
http://www.avast.com
More information about the Digitalmars-d-learn
mailing list