最近、std::reference_wrapper
クラスを使い始めました。get()
プリミティブ参照の特定の使用法を置き換えるときに、関数を使用して、通常の参照を取る関数にパラメーターとして reference_wrappers を渡す必要がないことに気付きました。
void foo(const T& a);
//...
T obj;
std::reference_wrapper<const T> ref(obj);
foo(ref); //works!
//foo(ref.get()); also works, but I expected that it would be required
std::reference_wrapper
関数に渡されたときに、どのようにプリミティブ参照に暗黙的に変換されますか?