クラスStagingConfigDatabaseに似たサードパーティライブラリのクラスがいくつかあります。これらのクラスは、作成後に破棄する必要があります。RAIIにshared_ptrを使用していますが、例に示すように、個別のテンプレートファンクターを使用するのではなく、 1行のコードを使用して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(); } );
しかし、それはコンパイルされません:(
ヘルプ!