C++0x

Boost.Optional は可能な限り trivial であるべきだ。

ちょっと前の記事で、 boost::optional のデストラクタは、 T のデストラクタが trivial であった場合でも 非 trivial になってしまうので、ちょっと嫌だなー、という旨を書きましたが、本の虫: C++0xにおけるPODの定義 を読んで、考え方が変わりました。 デ…

std::declval 関数テンプレート

C++0x では decltype によって「式の型」を得ることが出来ますが、 テンプレートメタプログラミングなんかで「ある型の変数を decltype 内で使いたい」って時には、 その変数をどうやって作るかが問題になります。 例えば T1 と T2 を乗算した結果の型が欲し…

C++でデストラクタを呼ばなくていい条件

参考: デストラクタを呼ばずに再構築 - melpon日記 - HaskellもC++もまともに扱えないへたれのページ C++ では、動的に確保したメモリ領域にオブジェクトを構築した場合、 確保した領域を解放する前に、デストラクタを呼び出す必要があります: // 何らかの…