C++03/11における関数の引数型とコピー/ムーブ処理コストとの関係について。 本記事の内容は C++Now 2012 Keynote: "Moving Forward with C++11" スライド資料(Part I, Part II) に基づく。(Part IIのpp.22-57) 型Tに対する変更操作を行う関数において、引数の型をconst参照渡し(const T&)*1または値渡し(T)とするどちらが “良い” デザインかという話。ここでは関数呼び出しから値を返すまでに生じるコピーコンストラクタ/ムーブコンストラクタの呼び出し回数によって評価する。つまり、回数が少ない方が低コスト=良いデザインという観点にたつ。 // const参照渡し; pass-by-const-reference T modify1(const T& x) { T tmp(x); tmp.modify()