У меня есть несколько классов из сторонней библиотеки, аналогичной классу StagingConfigDatabase, который необходимо уничтожить после его создания.Я использую shared_ptr для RAII, но предпочел бы создать shared_ptr, используя одну строку кода вместо использования отдельного функтора шаблона, как показывает мой пример.Возможно, используя лямбды?или связать?
struct StagingConfigDatabase
{
static StagingConfigDatabase* create();
void destroy();
};
template<class T>
struct RfaDestroyer
{
void operator()(T* t)
{
if(t) t->destroy();
}
};
int main()
{
shared_ptr<StagingConfigDatabase> pSDB(StagingConfigDatabase::create(), RfaDestroyer<StagingConfigDatabase>());
return 1;
}
Я рассматривал что-то вроде:
shared_ptr<StagingConfigDatabase> pSDB(StagingConfigDatabase::create(), [](StagingConfigDatabase* sdb) { sdb->destroy(); } );
, но это не компилируется: (
Help!