2014-06-06 40 views
3

我怎樣才能比較兩個std::reference_wrapper他們持有的參考?我想看看兩個std::reference_wrapper的引用是否相等。比較reference_wrappers的地址

編輯:混淆抱歉。我的意思是如何獲取指示對象的地址並進行比較。

+0

'r1.get()== r2.get()' – 0x499602D2

+3

您想比較'reference_wrapper'引用的對象的地址(如標題所示),或比較對象本身是否相等作爲問題的主體建議)? – Praetorian

回答

7

成員函數get()返回對所引用元素的引用。然後您可以直接獲取指示對象的地址。

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

什麼?編號引用沒有地址。在這裏你得到了_referees_的地址,我甚至不確定這是OP想要的。 –

+0

@LightnessRacesinOrbit對不起,我的部分措辭不佳。我相當確信OP因爲問題標題想比較*地址*。 – Brian

3

成員函數std::reference_wrapper::get將返回它所持有的引用。然後,您可以比較兩個引用的對象:

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

上面會,當然,呼籲兩個對象operator==(如果該類型是一個類類型)。

+1

@LightnessRacesinOrbit我覺得幫助少數人之一[實際聽取](http://stackoverflow.com/a/24049899/493122),並試圖改進他的代碼。 – Shoe

+0

他明顯不會聽,否則他仍不會發布RTFM幫助臺問題。 –