プリミティブ型でなくとも小さな構造体 (or 共用体) ならレジスタ渡しになる、ってのは C で最適化されたコードを書く際に、しばしば使われるテクニック。でも C++ だと、コピーコンストラクタやデストラクタがある場合はこの最適化が不可能。他にも言語仕様的に細かな条件はあるのかな。ともかくコンパイラの実装でこの可否判断はどうなっているのか、と SUN のドキュメントを読んでいたら、とても頑張っていて驚いた。 In compatibility mode (-compat[=4]), a class is passed indirectly if it has any one of the following: A user-defined constructor A virtual function A virtual base class A base that is passed ind