我尝试使用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;
答案 0 :(得分:0)
STATIC_ASSERTION_FAILURE
来自BOOST_STATIC_ASSERT
。我怀疑Boost.Lockfree对fifo的元素有一些大小限制。使用较小的UDT再试一次。
也可能是Lockfree只适用于标准类型,因此不会接受任何UDT。如果是这种情况,则需要存储指针而不是实际结构。