id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 11490,"boost::lockfree::spsc_queue::pop(T*, size_type) did not compile when used with interprocess allocator",Philippe Leuba ,timblechmann,"The method runtime_sized_ringbuffer::pop(T*, size_type) when used with interprocess allocator produces the following error when compiled with g++ 4.9.1 under linux: /usr/local/include/boost/lockfree/spsc_queue.hpp: In instantiation of ‘boost::lockfree::detail::runtime_sized_ringbuffer::size_type boost::lockfree::detail::runtime_sized_ringbuffer::pop(T*, boost::lockfree::detail::runtime_sized_ringbuffer::size_type) [with T = int; Alloc = boost::interprocess::allocator, boost::interprocess::iset_index> >; boost::lockfree::detail::runtime_sized_ringbuffer::size_type = long unsigned int]’: /usr/local/include/boost/lockfree/spsc_queue.hpp:556:27: required from ‘boost::lockfree::detail::runtime_sized_ringbuffer::~runtime_sized_ringbuffer() [with T = int; Alloc = boost::interprocess::allocator, boost::interprocess::iset_index> >]’ /usr/local/include/boost/lockfree/spsc_queue.hpp:679:7: required from ‘void boost::interprocess::ipcdetail::placement_destroy::destroy_n(void*, std::size_t, std::size_t&) [with T = boost::lockfree::spsc_queue, boost::interprocess::iset_index> > > >; std::size_t = long unsigned int]’ spsc_queue_interprocess_test.cpp:33:1: required from here /usr/local/include/boost/lockfree/spsc_queue.hpp:609:72: error: no matching function for call to ‘boost::lockfree::detail::runtime_sized_ringbuffer, boost::interprocess::iset_index> > >::pop(int*&, boost::lockfree::detail::runtime_sized_ringbuffer, boost::interprocess::iset_index> > >::size_type&, boost::lockfree::detail::runtime_sized_ringbuffer, boost::interprocess::iset_index> > >::pointer&, boost::lockfree::detail::runtime_sized_ringbuffer, boost::interprocess::iset_index> > >::size_type&)’ return ringbuffer_base::pop(ret, size, array_, max_elements_); ^ /usr/local/include/boost/lockfree/spsc_queue.hpp:609:72: note: candidate is: /usr/local/include/boost/lockfree/spsc_queue.hpp:263:12: note: boost::lockfree::detail::ringbuffer_base::size_t boost::lockfree::detail::ringbuffer_base::pop(T*, boost::lockfree::detail::ringbuffer_base::size_t, T*, boost::lockfree::detail::ringbuffer_base::size_t) [with T = int; boost::lockfree::detail::ringbuffer_base::size_t = long unsigned int] size_t pop (T * output_buffer, size_t output_count, T * internal_buffer, size_t max_size) ^ /usr/local/include/boost/lockfree/spsc_queue.hpp:263:12: note: no known conversion for argument 3 from ‘boost::lockfree::detail::runtime_sized_ringbuffer, boost::interprocess::iset_index> > >::pointer {aka boost::interprocess::offset_ptr}’ to ‘int*’ I have attached a small test to reproduce the problem and a patch, but other method seems to suffer from the same problem. ",Bugs,new,To Be Determined,lockfree,Boost 1.58.0,Showstopper,,,pleuba@…