以下无法编译:
auto myCircularBuffer = boost::circular_buffer<int>{1,2,3,4};
有错误:
`error: no matching function for call to ‘boost::circular_buffer<int>::circular_buffer(<brace-enclosed initializer list>)’`
是否有另一种机制可以使用支撑的初始化列表构建boost :: circular_buffer或执行其他形式的聚合初始化?或者我们必须推送每个元素吗?
答案 0 :(得分:3)
从查看the docs开始,circular_buffer没有初始化列表重载。推送项目的唯一真正替代方案是InputIterator, InputIterator
overload。
当然,您可以自由创建使用InputIterator, InputIterator
重载的函数,以便使用初始化列表:
template<typename T>
boost::circular_buffer<T> make_circular_buffer(const std::initializer_list<T>& init)
{
return boost::circular_buffer<T>(init.begin(), init.end());
}
auto b = make_circular_buffer({1,2,3,4});