register キーワードを持つ変数が参照によって関数に渡されるコードを見てきました。
バージョン 1:
inline static void swap(register int &a, register int &b)
{
register int t = a;
a = b;
b = t;
}
バージョン 2:
inline static void swap(register int a, register int b)
{
register int t = a;
a = b;
b = t;
}
2 つのバージョンの違いは何ですか?
私の理解では、aとbはレジスタに保持されるため、これらのレジスタの値に加えられた変更は、参照演算子を使用せずに呼び出し元と呼び出し先の境界を越えて保持されるため、参照演算子は何の影響も与えません。