본문 바로가기

프로그래밍

std::unique_ptr 의 custom deleter 를 람다식 으로 지정하기

std::unique_ptr 에는 custom deleter 를 지정할 수 있다.

그중 람다식 지정에는 몇가지 방법이 있다.

// 1.functional
std::unique_ptr<foo, std::function<void(foo*)>> foo_ptr1(new foo,
    [](foo* p)
    {
      delete p;
    });

// 2.decltype
auto deleter = [](foo* p)
{
  delete p;
};
std::unique_ptr<foo, decltype(deleter)> foo_ptr2(new foo, deleter);

이것을 잘 활용하면 파일이나 소켓 핸들 관리에도 이용할수 있다.