std::unique_ptr のデリータをあとから設定する
と、いうのが Lingr の C++ 部屋に貼られていたので覚書。
[ソース]
#include <memory> #include <functional> #include <iostream> int main(){ auto p = std::unique_ptr<int, std::function<void(int*)>>{ new int{42}, std::default_delete<int>{} }; // deleter を設定 p.get_deleter() = [](int* p){ std::cout << "call deleter" << std::endl; delete p; }; std::cout << *p << std::endl; return 0; }
[出力]
42 call deleter
get_deleter() は参照オブジェクトを返すのでこんな感じで代入する事ができます。
便利……なのかな?