ideone.comで入手可能な例:
int passByConstPointerConst(MyStruct const * const myStruct)
int passByValueConst (MyStruct const myStruct)
どちらも渡された MyStruct の内容を実際にコピーしないように、コンパイラが上記の 2 つの関数を最適化すると思いますか?
多くの最適化に関する質問が個々のコンパイラと最適化設定に固有であることは理解していますが、単一のコンパイラ用に設計することはできません。代わりに、コピーを避けるためにポインターを渡す必要があるかどうかについて、一般的な期待を持ちたいと思います。コンパイラを使用して最適化を処理できるようconst
にする (構成した後) ことは、より良い選択であり、より読みやすく、エラーが発生しにくいコードになるようです。
ideone.comの例の場合、コンパイラは明らかにデータを新しい場所にコピーしています。