>>185
operator * はおそらく一時オブジェクトに対する operator *=で実装されているだろうから、
最適化の具合によっては

m2 = m1 * c * trace(m1)は
Comprex temp(m1);
temp *= c;
temp *= trace(m1);
m2 = temp;

の仮想コードに展開されるはず。

STLの用にそれなりにきちんと設計されたクラスライブラリは
最適化のこともしっかり考えてるよ。