6

保持している参照によって2 つの を比較するにはどうすればよいstd::reference_wrapperですか? std::reference_wrapper2 つの s の参照が等しいかどうかを確認したい。

編集:混乱して申し訳ありません。参照対象のアドレスを取得して比較する方法を意味していました。

4

2 に答える 2

11

メンバー関数は、参照された要素へのget()参照を返します。その後、指示対象のアドレスを直接取得できます。

std::addressof(r1.get()) == std::addressof(r2.get())
于 2014-06-06T00:51:25.853 に答える
5

メンバー関数std::reference_wrapper::getは、保持している参照を返します。次に、2 つの参照オブジェクトを次のように比較できます。

const auto& a = ref_a.get();
const auto& b = ref_b.get();
if (a == b) {
    // …
}

もちろん、上記はoperator==2 つのオブジェクトを呼び出します (型がクラス型の場合)。

于 2014-06-06T00:51:26.887 に答える