比较reference_wrappers的地址

Shi*_*bli 5 c++ c++11 reference-wrapper

如何std::reference_wrapper通过他们持有的参考来比较两个?我想看看两个std::reference_wrappers 的引用是否相等.

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

Bri*_*ian 10

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

std::addressof(r1.get()) == std::addressof(r2.get())
Run Code Online (Sandbox Code Playgroud)

  • 什么?不。参考文献没有地址。在这里你得到了 _referees_ 的地址,我什至不确定这是 OP 想要的。 (2认同)
  • @LightnessRacesinOrbit 抱歉我的措辞不好。而且我很确定 OP 因为问题标题而想要比较 *addresses*。 (2认同)

Sho*_*hoe 5

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

const auto& a = ref_a.get();
const auto& b = ref_b.get();
if (a == b) {
    // …
}
Run Code Online (Sandbox Code Playgroud)

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

  • @LightnessRacesinOrbit 我想帮助少数几个[真正倾听](http://stackoverflow.com/a/24049899/493122)的人之一,并试图改进他的代码。 (2认同)