Re: [Boost-users] boost::bind/boost::function and fast, delegates

On 1/22/2013 4:34 AM, boost-users-request-at-lists.boost.org |Boost/Allow to home| wrote:
And if you still wish to write such a lib(s) take a look at this article:
http://www.codeproject.com/Articles/7150/Member-Function-Pointers-and-the-Fa...
Coincedentely, that article references my project that I cited on another thread (shared pointers):
For Microsoft's (and Intel's) ugly, non-standard 12 byte |virtual_inheritance| pointers, yet another trick is used, based on an idea invented by John Dlugosz.
To pass bound member functions to legacy code (including OS API) that expects a genuine function pointer, I generated a thunk at run-time and used a compiler trick to get the information I needed regarding the 'this' adjustment. It is certainly the _fastest_ possible; but I did not elaborate on a full "bind" feature like Boost (and std) eventually came up with. In fact, I simplified my own code so that all the arguments to pass were just members of one structure, so I only worried about the case of binding to a member function with one argument. It didn't automatically capture smart-pointer objects for the binding, but I handled that separately since it was already being done for "windows" owned by the OS's reference to raw pointers; I had my own fake +1 count as part of the object, and Window objects were my primary interest. As I recall, the C++11 lambda spec provides for a primitive C function pointer to be coughed up, but I've not yet used a compiler that can do that.
participants (1)
-
John M. Dlugosz