Boost logo

Boost Users :

Subject: [Boost-users] [thread][move] compiling move(thread) with Android NDK GCC4.7
From: Igor R (boost.lists_at_[hidden])
Date: 2013-01-14 08:43:55


Hello,

I'm building my project with Android NDK toolchain (Boost1.51, GCC4.6
or GCC4.7), and I get the following error when trying to move thread.
Is there any workaround for this issue?

//...
vector_.push_back(boost::move(thread(&func, arg)));
//...

try.cpp:86:62: error: no matching function for call to 'move(boost::thread)'
try.cpp:86:62: note: candidates are:
In file included from boost/thread/detail/move.hpp:20:0,
                 from boost/thread/locks.hpp:11,
                 from boost/thread/pthread/mutex.hpp:12,
                 from boost/thread/mutex.hpp:16,
                 from boost/thread/pthread/thread_data.hpp:13,
                 from boost/thread/thread.hpp:17,
                 from boost/thread.hpp:13,
                 from try.h:3,
                 from try.cpp:6:
boost/move/move.hpp:324:97: note: template<class T> typename
boost::move_detail::disable_if<boost::has_move_emulation_enabled_aux<T>,
T&>::type boost::move(T&)
boost/move/move.hpp:324:97: note: template argument
deduction/substitution failed:
boost/move/move.hpp: In substitution of 'template<class T> typename
boost::move_detail::disable_if<boost::has_move_emulation_enabled_aux<T>,
T&>::type boost::move(T&) [with T = boost::thread]':
try.cpp:86:62: required from here
boost/move/move.hpp:324:97: error: no type named 'type' in 'struct
boost::move_detail::disable_if<boost::has_move_emulation_enabled_aux<boost::thread>,
boost::thread&>'
boost/move/move.hpp:330:96: note: template<class T> typename
boost::move_detail::enable_if<boost::has_move_emulation_enabled<T>,
boost::rv<T>&>::type boost::move(T&)
boost/move/move.hpp:330:96: note: template argument
deduction/substitution failed:
boost/move/move.hpp: In substitution of 'template<class T> typename
boost::move_detail::enable_if<boost::has_move_emulation_enabled<T>,
boost::rv<T>&>::type boost::move(T&) [with T = boost::thread]':
try.cpp:86:62: required from here
boost/move/move.hpp:330:96: error: no type named 'type' in 'struct
boost::move_detail::enable_if<boost::has_move_emulation_enabled<boost::thread>,
boost::rv<boost::thread>&>'
boost/move/move.hpp:336:96: note: template<class T> typename
boost::move_detail::enable_if<boost::has_move_emulation_enabled<T>,
boost::rv<T>&>::type boost::move(boost::rv<T>&)
boost/move/move.hpp:336:96: note: template argument
deduction/substitution failed:
try.cpp:86:62: note: 'boost::thread' is not derived from 'boost::rv<T>'
In file included from boost/thread/detail/move.hpp:20:0,
                 from boost/thread/locks.hpp:11,
                 from boost/thread/pthread/mutex.hpp:12,
                 from boost/thread/mutex.hpp:16,
                 from boost/thread/pthread/thread_data.hpp:13,
                 from boost/thread/thread.hpp:17,
                 from boost/thread.hpp:13,
                 from try.h:3,
                 from try.cpp:6:
boost/move/move.hpp:943:6: note: template<class I, class O> O
boost::move(I, I, O)
boost/move/move.hpp:943:6: note: template argument
deduction/substitution failed:
try.cpp:86:62: note: candidate expects 3 arguments, 1 provided
In file included from boost/thread/locks.hpp:11:0,
                 from boost/thread/pthread/mutex.hpp:12,
                 from boost/thread/mutex.hpp:16,
                 from boost/thread/pthread/thread_data.hpp:13,
                 from boost/thread/thread.hpp:17,
                 from boost/thread.hpp:13,
                 from try.h:3,
                 from try.cpp:6:
boost/thread/detail/move.hpp:55:124: note: typename
boost::enable_if<boost::is_convertible<T&,
boost::detail::thread_move_t<T> >, boost::detail::thread_move_t<T>
>::type boost::move(T&) [with T = boost::thread; typename
boost::enable_if<boost::is_convertible<T&,
boost::detail::thread_move_t<T> >, boost::detail::thread_move_t<T>
>::type = boost::detail::thread_move_t<boost::thread>]
boost/thread/detail/move.hpp:55:124: note: no known conversion for
argument 1 from 'boost::thread' to 'boost::thread&'
In file included from boost/thread/locks.hpp:11:0,
                 from boost/thread/pthread/mutex.hpp:12,
                 from boost/thread/mutex.hpp:16,
                 from boost/thread/pthread/thread_data.hpp:13,
                 from boost/thread/thread.hpp:17,
                 from boost/thread.hpp:13,
                 from try.h:3,
                 from try.cpp:6:
boost/thread/detail/move.hpp:62:37: note: template<class T>
boost::detail::thread_move_t<T>
boost::move(boost::detail::thread_move_t<T>)
boost/thread/detail/move.hpp:62:37: note: template argument
deduction/substitution failed:
try.cpp:86:62: note: 'boost::thread' is not derived from
'boost::detail::thread_move_t<T>'


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net