boost lockfree использовать определяемый пользователем тип

Я попытался использовать библиотеку boost lockfree. Однако возникает ошибка invalid application of ‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE<false>’, когда я устанавливаю для параметра шаблона тип, определяемый пользователем.
Есть ли что-нибудь, чтобы решить эту проблему?

typedef struct TMsgBuffer
   {
      char m_puBuffer[512];
      size_t m_iBufferLen;
   } tMsgBuffer;

boost::lockfree::fifo<tMsgBuffer> fifo;

person Michael D    schedule 03.11.2011    source источник
comment
Lockfree не является частью стандартного буста. Где вы его берете? Какой номер файла/строки выдает компилятор для этой ошибки?   -  person deft_code    schedule 05.11.2011


Ответы (1)


STATIC_ASSERTION_FAILURE возникает из BOOST_STATIC_ASSERT. Я подозреваю, что Boost.Lockfree имеет некоторые ограничения по размеру элементов FIFO. Попробуйте еще раз с меньшим UDT.

Также может случиться так, что Lockfree работает только со стандартными типами, поэтому UDT приниматься не будут. В этом случае вам нужно сохранить указатель вместо фактической структуры.

person deft_code    schedule 04.11.2011