boost lib中的语句,(void)p;这是什么意思?

时间:2011-07-08 09:44:34

标签: c++ templates boost

我在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;呢?

1 个答案:

答案 0 :(得分:1)

找到答案的一种方法是在该行代码上设置一个断点,然后逐步查看它的作用。您甚至可以重新格式化代码以允许您在该特定语句上设置断点(没有法律禁止编辑这些文件 - 只是不要更改实际代码)。

但是,我的猜测是pointer类型正在使用某种形式的延迟评估,模拟的强制转换操作符调用set_offset方法,因此this->set_offset(p)可能需要p设置有效的偏移量并执行(void)p只会强制它发生。