C++ 可以用括号内的初始化器列表构造boost::circular\u缓冲区吗?

C++ 可以用括号内的初始化器列表构造boost::circular\u缓冲区吗?,c++,boost,C++,Boost,无法编译以下内容: 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:

无法编译以下内容:

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_缓冲区,或者执行另一种形式的聚合初始化?或者我们必须将每个元素向后推吗?

从外观上看,循环缓冲区没有初始化列表重载。除了一次推一个项目外,唯一真正的替代方法是

当然,您可以自由创建自己的函数,该函数使用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});