sha*_*oth 11 c++ boost casting
在boost :: detail :: addressof_impl :: f()中,一系列reinterpret_casts用于获取对象的实际地址,以防万一class T重载operator&():
template<class T> struct addressof_impl
{
static inline T* f( T& v, long )
{
return reinterpret_cast<T*>(
&const_cast<char&>(reinterpret_cast<const volatile char&>(v)));
}
}
Run Code Online (Sandbox Code Playgroud)
施法的目的是什么const volatile char&而不仅仅是施法char&?
char&如果T有const或者volatile限定符,reinterpret_cast则直接转换将失败- 无法删除这些(但可以添加它们),并且const_cast不能进行任意类型更改.
| 归档时间: |
|
| 查看次数: |
485 次 |
| 最近记录: |