Boost logo

Boost :

Subject: [boost] [interprocess] Is message_queue experiencing problems in 1.55?
From: Joseph Van Riper (fleeb.fantastique_at_[hidden])
Date: 2014-05-28 15:00:34


I'm embarrassed to ask this, but I don't see documentation to help me
through a problem like this. I assume I'm doing something wrongly, since I
assume someone would have seen something like this earlier. Note that I've
boiled this down to the simplest reproducible problem... originally, I
tried to simply make use of the message queue using the example code in the
documentation, but I can't get past the compile error. I started removing
code to find the problem, only to strip ... well ... all of it away. I
also tried looking through trac to see if someone already reported this,
but I didn't see anything (which doesn't necessarily mean anything, as I
may have failed to properly search the thing).

Steps to reproduce:

1. On VC++ 2013, create an empty command-line project.
2. At the top of the main .cpp file, add "#include
<boost/interprocess/ipc/message_queue.hpp>"
3. Ensure the project can find the boost headers.
4. Compile.

Expected result:

A completely pointless, but compiled .exe is created.

Actual result:

Compile error:

1>------ Build started: Project: msgqueue_test, Configuration: Debug Win32
------
1> stdafx.cpp
1> msgqueue_test.cpp
1>c:\users\tvanriper\documents\code\sdks\boost\include\boost-1_55\boost\intrusive\detail\has_member_function_callable_with.hpp(200):
error C2228: left of '.select_on_container_copy_construction' must have
class/struct/union
1> type is 'boost::move_detail::add_rvalue_reference<U>::type'
1>
 c:\users\tvanriper\documents\code\sdks\boost\include\boost-1_55\boost\intrusive\detail\has_member_function_callable_with.hpp(276)
: see reference to class template instantiation
'boost::container::container_detail::has_member_function_callable_with_select_on_container_copy_construction_impl<Fun,true,>'
being compiled
1> with
1> [
1> Fun=std::allocator<std::pair<const
boost::interprocess::ipcdetail::sync_id *const
,boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const
boost::interprocess::ipcdetail::sync_id,void *>>>>>
1> ]
1>
 c:\users\tvanriper\documents\code\sdks\boost\include\boost-1_55\boost\container\allocator_traits.hpp(262)
: see reference to class template instantiation
'boost::container::container_detail::has_member_function_callable_with_select_on_container_copy_construction<const
Alloc,>' being compiled
1> with
1> [
1> Alloc=std::allocator<std::pair<const
boost::interprocess::ipcdetail::sync_id *const
,boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const
boost::interprocess::ipcdetail::sync_id,void *>>>>>
1> ]
1>
 c:\users\tvanriper\documents\code\sdks\boost\include\boost-1_55\boost\container\detail\tree.hpp(217)
: see reference to class template instantiation
'boost::container::allocator_traits<A>' being compiled
1> with
1> [
1> A=std::allocator<std::pair<const
boost::interprocess::ipcdetail::sync_id *const
,boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const
boost::interprocess::ipcdetail::sync_id,void *>>>>>
1> ]
1>
 c:\users\tvanriper\documents\code\sdks\boost\include\boost-1_55\boost\container\detail\tree.hpp(246)
: see reference to class template instantiation
'boost::container::container_detail::intrusive_rbtree_type<A,boost::container::container_detail::tree_value_compare<Key,std::pair<const
Key,T>,Compare,boost::container::container_detail::select1st<std::pair<const
Key,T>>>>' being compiled
1> with
1> [
1> A=std::allocator<std::pair<const
boost::interprocess::ipcdetail::sync_id *const
,boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const
boost::interprocess::ipcdetail::sync_id,void *>>>>>
1> , Key=const boost::interprocess::ipcdetail::sync_id *
1> ,
 T=boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const
boost::interprocess::ipcdetail::sync_id,void *>>>
1> ,
 Compare=boost::interprocess::ipcdetail::sync_handles::address_less
1> ]
1>
 c:\users\tvanriper\documents\code\sdks\boost\include\boost-1_55\boost\container\map.hpp(83)
: see reference to class template instantiation
'boost::container::container_detail::rbtree<Key,std::pair<const
Key,T>,boost::container::container_detail::select1st<std::pair<const
Key,T>>,Compare,Allocator>' being compiled
1> with
1> [
1> Key=const boost::interprocess::ipcdetail::sync_id *
1> ,
 T=boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const
boost::interprocess::ipcdetail::sync_id,void *>>>
1> ,
 Compare=boost::interprocess::ipcdetail::sync_handles::address_less
1> , Allocator=std::allocator<std::pair<const
boost::interprocess::ipcdetail::sync_id *const
,boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const
boost::interprocess::ipcdetail::sync_id,void *>>>>>
1> ]
1>
 c:\users\tvanriper\documents\code\sdks\boost\include\boost-1_55\boost\interprocess\sync\windows\sync_utils.hpp(226)
: see reference to class template instantiation
'boost::container::map<const boost::interprocess::ipcdetail::sync_id
*,boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<T>>,boost::interprocess::ipcdetail::sync_handles::address_less,std::allocator<std::pair<const
Key,boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<T>>>>>'
being compiled
1> with
1> [
1> T=std::pair<const
boost::interprocess::ipcdetail::sync_id,void *>
1> , Key=const boost::interprocess::ipcdetail::sync_id *
1> ]
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk