I know that the topic of "C++ delegates" has been done to death, and both http://www.codeproject.com and http://stackoverflow.com deeply cover the question.

Generally, it seems that Don Clugston's fastest possible delegate is the first choice for many people. There are a few other popular ones.

However, I noticed that most of those articles are old (around 2005) and many design choices seem to have been made taking in account old compilers like VC7.

I'm in need of a very fast delegate implementation for an audio application.

I still need it to be portable (Windows, Mac, Linux) but I only use modern compilers (VC9, the one in VS2008 SP1 and GCC 4.5.x).

My main criteria are:

  • it must be fast!
  • it must be forward-compatible with newer versions of the compilers. I have some doubts about that with Don's implementation because he explicitly states it's not standard-compliant.
  • optionally, a KISS-syntax and ease-of-use is nice to have
  • multicast would be nice, although I'm convinced it's really easy to build it around any delegate library

Furthermore, I don't really need exotic features. I just need the good old pointer-to-method thing. No need to support static methods, free functions or things like that.

As of today, what is the recommended approach? Still use Don's version? Or is there a "community consensus" about another option?

I really don't want to use Boost.signal/signal2 because it's not acceptable in terms of performance. A dependency on QT is not acceptable as well.

Furthermore, I've seen some newer libraries while googling, like for example c++ delegates performance

Edit
Report