つい最近知ってちょっと衝撃を受けたことについて. 非const参照パラメータが指定されている関数の項に右辺値(リテラルもしくは関数から返される一時オブジェクト)を指定できないのは有名. void f( int &i ) { ..... } int g() { return 1; } int main() { f( g() ); // ダメ. C++ の言語規格では認められていない }これは非constなテンプレートパラメータが指定された関数の項でも同じ. template< class T > void f( T &i ) { ..... } int g() { return 1; } int main() { f( g() ); // 同じくダメ. }これは比較的良く知られている(のか?)規格で,別にいまさらこれに驚いたわけじゃない. ところが右辺値の型が const 修飾されていると,