
On Sat, Dec 14, 2013 at 9:25 AM, Bjorn Reese
On 12/14/2013 03:49 PM, Alexander Lamaison wrote:
I'm trying to create something like a `boost::function`, but with an extra 'smart handle' tucked inside, which controls the lifetime of a resource the functions needs to execute correctly.
The two aspects (resource life-time and generic signatures) should probably be handled separately.
Regarding resource life-time, a common pattern is to bind to a member function on an object obtained via shared_from_this(). Here is an example from Boost.Asio:
I tend to agree with this application of the pattern: dependency-injection and/or inversion-of-control, or in this case, method-injection. Trust me, from industry best practice, as well as experience, you'll be glad you did, because you can keep the concerns a) loosely coupled, and b) more concise, single-responsibility, closer to the problem they are actually trying to solve.
http://www.boost.org/doc/html/boost_asio/tutorial/tutdaytime3.html
Regarding generic signatures I am less certain, but maybe you could look into Boost.TypeErasure. Especially its type-safe printf example (or the subsequent example with multiple signatures)
http://www.boost.org/doc/html/boost_typeerasure/examples.html#boost_typeeras...
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users