...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

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に統合されるのかな?