IT用語集 › プログラミング › コピー省略

コピー省略

プログラミング Svenska → 更新: 2026-10-21

コンパイラがコピーやムーブを丸ごと省き、オブジェクトを最終的な置き場所に直接構築すること。C++17以降、重要な場合は最適化ではなく要件である。

一時オブジェクトを返すreturn T{...};は、C++17以降、コピーを一切伴ってはならない。オブジェクトは呼び出し側の記憶域で直接初期化される。この規則はコピーもムーブもできない型にも適用されるよう定められており、ファクトリ関数がstd::mutexのようなものを返せる。名前付きローカル変数の場合(NRVO)は依然として任意だが、まともなコンパイラはすべて行う。

よくある落とし穴は、役に立つと信じてreturn std::move(x);と書くことだ。実際は逆効果で、式が単なる名前ではなくなるためNRVOが無効になり、何もしなくてよかったはずの場面で確実なムーブが発生する。

← 用語集に戻る