C++ 11 での std::reference_wrapper の実装に気付きましたが、「生の」参照変数の代わりに std::reference_wrapper を使用する必要がある理由を知りたいです。
参照ラッパーはコピーできるオブジェクトであることは理解しましたが、参照の代わりにそれを使用する必要があるのはなぜですか? この機能のポイントは何ですか? 次の疑似コードを考えてみましょう
class A;
A myA{};
A& refMyA = &a;
std::reference_wrapper<A> refWMyA = std::ref(A);
void foo (const A& aRef) {// do stuff}
void bar (const std::reference_wrapper<A> aRef) {// do stuff}
fooよりもbarを好むのはなぜですか?