6

我如何std::reference_wrapper通过它们持有的引用来比较两个 s?我想看看两个std::reference_wrappers 的引用是否相等。

编辑:抱歉混淆。我的意思是如何获取所指对象的地址并进行比较。

4

2 回答 2

11

成员函数返回对所get()引用元素的引用。然后,您可以直接获取所指对象的地址。

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

成员函数std::reference_wrapper::get将返回它持有的引用。然后,您可以将两个引用的对象与以下内容进行比较:

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

当然,上面会调用operator==两个对象(如果类型是类类型)。

于 2014-06-06T00:51:26.887 回答