jeudi 5 mars 2015

C++ equivalent syntax for a C# generic delegate, and usage thereof


In C# I can do this:



delegate void myFunctionDelegate<T>(T arg);


In C++, I understand that I need to use an alias to a template for a function pointer, but the syntax is so bizaare that all of the examples I find just confuse me more.


The following is wrong; how can I correct it?



template<typename T>
using myFunctionDelegate = void (*)(T arg);


I want to use it like so:



template<class T> class Foo
{
...
void someOtherFunction(myFunctionDelegate callback)
{
...
callback(someValue);
}
}


and then:



myClassInstance.someOtherFunction([&](T arg) {
// do something with the callback argument
});



Aucun commentaire:

Enregistrer un commentaire