我在Boost Library中看到了以下代码,用于offset_ptr。在boost / interprocess / offset_ptr.hpp下
typedef PointedType * pointer;
...
//!Constructor from other pointer.
//!Never throws.
template <class T>
offset_ptr(T *ptr)
{ pointer p (ptr); (void)p; this->set_offset(p); }
我想知道什么是声明(void)p;呢?
答案 0 :(得分:1)
找到答案的一种方法是在该行代码上设置一个断点,然后逐步查看它的作用。您甚至可以重新格式化代码以允许您在该特定语句上设置断点(没有法律禁止编辑这些文件 - 只是不要更改实际代码)。
但是,我的猜测是pointer
类型正在使用某种形式的延迟评估,模拟的强制转换操作符调用set_offset
方法,因此this->set_offset(p)
可能需要p
设置有效的偏移量并执行(void)p
只会强制它发生。