关于 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