http://blog.coldflake.com/posts/2014-01-12-C%2B%2B-delegates-on-steroids.html