最近、範囲ベースの for を使い始めました (コンパイラ機能を取得した後)。範囲ベースの for を使用するのに適した形式は次のとおりであることに気付きました。
for(const auto& it: container) {...}
これは、int より大きい任意の型で意味があります。ただし、コンテナーが生のポインター (私の場合) を保持している場合、または小さい型を保持している場合はどうなるでしょうか?
具体的には、私が知りたいことは次のとおりです。
1) (おそらく) 小さいコピーの代わりに参照を要求することで、パフォーマンスの低下を招く可能性はありますか? 型のサイズがネイティブ ポインターのサイズと正確に等しい場合はどうなるでしょうか。
2) 逆に、参照を使用しないことでパフォーマンスが低下する可能性はありますか? (範囲ベースの for の場合、コンパイラがいくつかの最適化を実行できる可能性が高いため)
C++ 標準ではなく、考えられるコンパイラの動作についての洞察を求めていることに注意してください。