std::tr1::shared_ptr
VS2008SP1を入れたら次期C++標準ライブラリのドラフトであるtr1ライブラリがいくつか入っているようなのでちょっとだけ調べてみた.
#include <iostream> #include <memory> // std::tr1::share_ptr はここに入ってるのね class A { public: int v; A(int v) : v(v) {std::cout << "create" << std::endl;} ~A() {std::cout << "destroy" << std::endl;} }; void main() { std::cout << "scope in" << std::endl; { std::tr1::shared_ptr<A> p1(new A(1234)); std::tr1::shared_ptr<A> p2(p1); std::tr1::shared_ptr<A> p3(p2); std::cout << p1->v << std::endl; std::cout << p2->v << std::endl; std::cout << p3->v << std::endl; } std::cout << "scope out" << std::endl; } /* scope in create 1234 1234 1234 destroy scope out */
boostを入れなくてもshared_ptrを使えるなんてっ!
まともなC++使いなら泣いて喜んじゃいますね.
社内規約で使えないとかで鬱が加速する人もいそうですけどw
ところで名前空間tr1は将来的にどうなるのかなー.
tr1の層がなくなってstdに統合されるのかな?