2016-08-30 61 views
2

下無法編譯:是否可以使用支持的初始化程序列表構建boost :: circular_buffer?

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有支撐初始化器列表或執行聚合初始化的另一種形式?或者我們必須push_back每個元素?

回答

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}); 
相關問題