У меня нет большого опыта работы с boost, между проектами что то просматриваю, и начинаю использовать. Вот прикололся от boost::bind, ядерная вещь, стал применять его для resource holder. Я строю стековый обьект, который при разрушении вызовет функциональный обьект, полученный от bind, примерно так:
Holder hld1 = boost::bind( &MyClass::CloseSomething, pMyClass, "blabla", nCustomerNumber );
но имплементацию холдера в boost так и не нашел, использую на скоро собранные самоделки:
struct Holder
{
struct InnerHolder
{
virtual ~InnerHolder()
{
}
};
InnerHolder* _pInnerHolder;
template<typename T>
Holder( T op ):_pInnerHolder( new InnerHolderImpl<T>( op ) )
{ }
~Holder()
{
delete _pInnerHolder;
}
template< typename T >
struct InnerHolderImpl : public InnerHolder
{
InnerHolderImpl( T op ) : _op( op ){}
virtual ~InnerHolderImpl()
{
_op();
}
T _op;
};
};
может кто подскажет что то уже реализованное в бусте, с лучшей производительностью.