による関数受け渡しに使用してREF私は2つの機能があります。のstd ::テンプレート関数と値
void fun(int k) {
++k;
}
template<class T>
void inc(T t) {
++t;
}
をそして私はこれらのstd :: refを持つ関数を呼び出す:の値の後
をpは5、oの値は6です。これらの関数に対してstd :: refで関数を呼び出すとどういう違いがありますか?
による関数受け渡しに使用してREF私は2つの機能があります。のstd ::テンプレート関数と値
void fun(int k) {
++k;
}
template<class T>
void inc(T t) {
++t;
}
をそして私はこれらのstd :: refを持つ関数を呼び出す:の値の後
をpは5、oの値は6です。これらの関数に対してstd :: refで関数を呼び出すとどういう違いがありますか?
std::ref
はstd::reference_wrapper
を返します。このタイプはimplicitly convertibleです。
fun(std::ref(p))
を呼び出すと、新しく作成されたstd::reference_wrapper
がint
に暗黙的に変換され、コピーが作成されます。
inc(std::ref(p))
を呼び出すときは、の参照セマンティクスをそのまま使用して、std::reference_wrapper
をコピーしています。
私の答えよりも良い。よくやった。 – mascoj
ありがとうございました。 –
明らかではありませんか? – LogicStuff