比较reference_wrappers的地址

时间:2014-06-06 00:48:54

标签: c++ c++11 reference-wrapper

如何通过它们所包含的引用来比较两个std::reference_wrapper?我想看看两个std::reference_wrapper的引用是否相等。

编辑:对不起,混乱。我的意思是如何获取所指对象的地址并进行比较。

2 个答案:

答案 0 :(得分:9)

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

std::addressof(r1.get()) == std::addressof(r2.get())

答案 1 :(得分:4)

成员函数std::reference_wrapper::get将返回它所持有的引用。然后,您可以将两个引用的对象与:

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

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