>>571 C と同じコーディングをしてればコピーが増えることはない。 C++ 流にコーディングするならコピーコンストラクタの動作は 意識しなければならない。しっかりした知識が身に付けば、 コピーコンストラクタの動作するタイミングにはちゃんと 根拠があることがわかる。そんなに不条理なタイミングで動作はしない。
18.6.1 what() の説明のとこに "Remarks: The message may be a null-terminated multibyte string (17.3.2.1.3.2), suitable for conversion and display as a wstring (21.2, 22.2.1.4)." って書いてあるのを見つけた。 wstring に変換して表示できるマルチバイト文字列でもいいと 書かれている。
template< bool Left = true > shift_op { template< typename T, typename X > T operator()( T t, X x ) { return T << x; } }; template<> shift_op< false > { template< typename T, typename X > T operator()( T t, X x ) { return T >> x; } };