はじめて shared_ptr を使ってみた。

どもです。
TDD by example を読みながら C++ で googletest を使いながら,
写経しているのですが,やはりポインタを使う必要があるわけでして,
どうしたものかと。
最初,Accelerated C++ を読んでいて作った Handle クラスを使用していたのですが,
現在,Effective C++ も同時で読んでいまして,昨日寝ながら読んだ部分に,
shared_ptr なるものが登場したので,これを使ってみようと。
というか,Accelerated C++ で作ったハンドルクラス達は,
簡易 auto_ptr だったり 簡易 shared_ptr だったのねん。
なので抵抗なく。


んで,ワシの環境だと,tr1/memory をインクルードすればオッケーだった。
ちなみに,cygwin, g++ 4.3.4。
んで,tr1 ってなんぞ? と思いググったら,「Technical Report 1」 の略だった。
へぇ。初めて知ったお。詳細は Wikipediaに。


http://ja.wikipedia.org/wiki/Technical_Report_1
http://en.wikipedia.org/wiki/C%2B%2B_Technical_Report_1

おまけ

TDD をやっているとしょっちゅうコンパイルとテストを行う必要が
あると思うのですが,ワタシは smart-compile.el を使っていて,
C-cC-c に smart-compile を割り当てていて,
g++ ほげほげ && ./HogeTest とかやっているわけでして,
ほいで,テストがこけると,モードラインに赤で exit(2) とかでるので,
それはそれでわかりやすいのですが,テストがたくさんになってくると,
どのテストでこけたかを把握するために,「C-x `」,「M-gn」とか,もしくは,
compilation バッファへ行ってスクロールするわけですが,
これがなんとかならんのかと。
マニュアル読んだらなんとかなった。
処方。

(setq compilation-ask-about-save nil)
(setq compilation-scroll-output 'first-error)

一応,info から抜粋しておきます。

   If you change the variable `compilation-scroll-output' to a
non-`nil' value, the compilation buffer will scroll automatically to
follow the output as it comes in.  If the value is `first-error', the
scrolling stops at the first error that appears, leaving point at that
error.  For any other non-`nil' value, the buffer continues scrolling
until there is no more output.


これで,コンパイルコマンドを実行したときに,あれば最初のエラーまで
スクロールしてくれる。なければ,最後までスクロールしてくれるという
素敵仕様になります。
ちなみに上の,compilation-ask-about-save を nil にすると,
コンパイルするときに勝手にバッファを保存してくれるので,
たいへん便利です。