以下是我的问题的表示。
#include <boost/lockfree/spsc_queue.hpp>
class test {
struct complicated {
int x;
int y;
};
std::allocator<complicated> alloc;
boost::lockfree::spsc_queue<complicated,
boost::lockfree::allocator<std::allocator<complicated> > > spsc;
test(void);
};
test::test(void): spsc( alloc ) {};
使用此代码,VS2010 出现以下错误:
错误 C2512:'boost::lockfree::detail::runtime_sized_ringbuffer':没有合适的默认构造函数可用
在编译类模板成员函数'boost::lockfree::spsc_queue::spsc_queue(const std::allocator<_Ty> &)'时
错误消息指出它正在编译一个带有一个参数的构造函数,我认为它应该是分配器,但主要错误是关于默认构造函数。
文档的起点是http://www.boost.org/doc/libs/1_54_0/doc/html/lockfree.html。
用 boost::lockfree::allocator 定义 boost::lockfree::spsc_queue 的适当机制是什么?