概要 RVO(Return Value Optimization)の話です。特別に触れませんがNRVO(Named RVO)も最適化されるものとして話を進めています。 昔の効率の良いコード void Initialize(std::vector<int>& buffer) { // bufferに色々な計算結果を詰める buffer.emplace_back(5); } 昔は新しいデータ列を作成する際、アロケートの際には上記のような関数が使われていました。 それ故に下記のような分かり難い記述が散らかることになります。 std::vector<int> buffer; // これくらいならまだ良いけど Initialize(buffer); // 生成に必要な引数が増えると何がなんだか Create(buffer, elementA, elementIndex, combineBuffer)