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