先日,ついに C++11 の主要な機能を一通り実装した GCC-4.8.1 がリリースされた. もう一方の主要な C++ コンパイラである Clang++ でも C++11 の機能は既に全て実装されており, 来る 6/05 に最新版の Clang-3.3 がリリースされ, C++11 対応が完了する見通しだ.*1 このような状況においては, C++11 への乗り換えを検討し始めているプロジェクトも多いことだろう. さて, C++11 では, C++98/03 との互換性を保ちつつ,クラス設計に大きな影響を齎す変化が採用された. すなわち, Move Semantics である. この登場により, C++11 で「良い」とされるクラス設計は, C++98/03 時代とは若干 異なったものとなる. そこで,この記事では,筆者が C++11 において「良い」と考えているクラス設計を提案してみたい