[interprocess] Is message_queue experiencing problems in 1.55?
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 ==========
On Wed, May 28, 2014 at 3:00 PM, Joseph Van Riper < fleeb.fantastique@gmail.com> wrote:
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).
Ah, sorry, I see that there *is* something in the release notes concerning has_member_function_callable_with failing for this compiler (VC++ bug). Sorry to trouble anyone with this. - Trey
El 28/05/2014 21:22, Joseph Van Riper escribió:
On Wed, May 28, 2014 at 3:00 PM, Joseph Van Riper < fleeb.fantastique@gmail.com> wrote:
Ah, sorry, I see that there *is* something in the release notes concerning has_member_function_callable_with failing for this compiler (VC++ bug).
Sorry to trouble anyone with this.
1.55 was not tested with Visual 2013 due to lack of time. Develop or master branch code should work. Best, Ion
participants (2)
-
Ion Gaztañaga
-
Joseph Van Riper