2012年4月19日木曜日

boost::interprocess::unique_ptr 習作

カスタム・デリータが欲しくて、排他制御なんていらん。そういう場合。
#include <boost/interprocess/smart_ptr/unique_ptr.hpp>
#include <boost/function.hpp>
#include <iostream>

struct hoge {
  hoge() { std::cout << "hoge()" << std::endl; }
  ~hoge() { std::cout << "~hoge()" << std::endl; }
};

struct my_deletor {
  void operator() ( const hoge* h ) const {
    std::cout << "my_deletor" << std::endl;
    delete h;
  }
};

void my_deletor2( const hoge* h ) {
  std::cout << "my_deletor2" << std::endl;
  delete h;
}

using boost::interprocess::unique_ptr;


int main() {
  unique_ptr<hoge,my_deletor> hptr( new hoge, my_deletor() );

  unique_ptr<hoge,boost::function<void(const hoge*)> > hptr2( new hoge, my_deletor2 );

  return 0;
}

0 件のコメント: