утверждение в boost lib, (void) p;что это значит? - PullRequest
5 голосов
/ 08 июля 2011

Я наткнулся на следующий фрагмент кода в 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 Ответ

1 голос
/ 08 июля 2011

Один из способов выяснить это - поставить точку останова на этой строке кода и пройтись, чтобы узнать, что он делает. Вы даже можете переформатировать код, чтобы позволить вам установить точку останова для этого конкретного оператора (нет никакого закона против редактирования этих файлов - просто не меняйте фактический код).

Тем не менее, я предполагаю, что тип pointer использует некоторую форму отложенной оценки, эмулируемые операторы приведения вызывают метод set_offset, поэтому, возможно, this->set_offset(p) требует p, чтобы установить действительное смещение и выполнение (void)p просто заставляет это произойти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...