以下内容无法编译:
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 或执行另一种形式的聚合初始化?或者我们是否必须将每个元素推回?
最佳答案
查看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});
关于c++ - 是否可以使用支撑初始化列表构造 boost::circular_buffer ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39229712/