關於 addressof的實作

作者: dreamboat66 (小嫩)   2015-12-30 19:01:41
網站上寫的possible implementation是
template< class T >
T* addressof(T& arg)
{
return reinterpret_cast<T*>(
&const_cast<char&>(
reinterpret_cast<const volatile char&>(arg)));
}
請問各位
要是我 也只會寫出最外層轉型
他多那兩次轉型,有什麼目的或是為了可攜性嗎?
因為我想不透只寫最外層的轉型會有什麼問題 ,難道會再某些情況出問題?
謝謝
作者: LPH66 (-6.2598534e+18f)   2015-12-30 19:33:00
你看到的地方下幾行有個連結到這裡http://stackoverflow.com/a/6495205/273767這個回答往下數幾個到 http://stackoverflow.com/a/6494964以及這個問題本身即是你所想要的原因簡答: 這是為了閃過有哪個怪胎去 overload operator &解法是利用 reinterpret_cast 的定義將這參考硬轉成 char&const volatile 是為了當你原來的東西有 const volatile時所用的, 不然不給你轉; 之後再用 const_cast 拿掉它們

Links booklink

Contact Us: admin [ a t ] ucptt.com