std::unique のデフォルトのデリータ
std::unique のデフォルトのデリータは何なのか調べてみたら次のように定義されているみたい。
template< class T, class Deleter = std::default_delete<T> > class unique_ptr; template < class T, class Deleter > class unique_ptr<T[],Deleter>;
と、いうことでデフォルトでは std::default_delete が使用されているみたいです。
std::default_delete
[ソース]
#include <iostream> #include <memory> struct X{ X(){ std::cout << "new X" << std::endl; } ~X(){ std::cout << "delete X" << std::endl; } }; int main(){ std::cout << "start" << std::endl; auto xp = new X{}; std::default_delete<X> deleter; deleter(xp); std::cout << "end" << std::endl; return 0; }
[出力]
start new X delete X end
std::default_delete