[Boost-bugs] [Boost C++ Libraries] #5274: failed to compile future.hpp with stlport 5.1.5 under msvc8.1, because of undefined class

Subject: [Boost-bugs] [Boost C++ Libraries] #5274: failed to compile future.hpp with stlport 5.1.5 under msvc8.1, because of undefined class
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2011-03-07 10:49:45


#5274: failed to compile future.hpp with stlport 5.1.5 under msvc8.1, because of
undefined class
------------------------------+---------------------------------------------
 Reporter: anonymous | Owner: anthonyw
     Type: Bugs | Status: new
Milestone: To Be Determined | Component: thread
  Version: Boost 1.46.0 | Severity: Problem
 Keywords: |
------------------------------+---------------------------------------------
 f:\dev\adoxx512_boost\adoxx\include\stlport\stl/type_traits.h(249) : error
 C2139: 'boost::detail::future_waiter::registered_waiter' : an undefined
 class is no
 t allowed as an argument to compiler intrinsic type trait
 '__has_trivial_constructor'
         f:\dev\adoxx512_boost\adoxx\include\boost/thread/future.hpp(395) :
 see declaration of 'boost::detail::future_waiter::registered_waiter'
         f:\dev\adoxx512_boost\adoxx\include\stlport\stl/_vector.h(137) :
 see reference to class template instantiation
 'stlpd_std::__type_traits<_Tp>' being c
 ompiled
         with
         [
             _Tp=boost::detail::future_waiter::registered_waiter
         ]
 f:\dev\adoxx512_boost\adoxx\include\stlport\stl/debug/_iterator.h(381) :
 see reference to class template instantiation
 'stlpd_std::priv::_NonDbg_vecto
 r<_Tp,_Alloc>' being compiled
         with
         [
             _Tp=boost::detail::future_waiter::registered_waiter,
 _Alloc=stlpd_std::allocator<boost::detail::future_waiter::registered_waiter>
         ]
 f:\dev\adoxx512_boost\adoxx\include\stlport\stl/debug/_vector.h(106) : see
 reference to class template instantiation
 'stlpd_std::priv::__construct_che
 cker<_Container>' being compiled
         with
         [
 _Container=stlpd_std::priv::_NonDbg_vector<boost::detail::future_waiter::registered_waiter,stlpd_std::allocator<boost::detail::future_waiter::regi
 stered_waiter>>
         ]
         f:\dev\adoxx512_boost\adoxx\include\boost/thread/future.hpp(396) :
 see reference to class template instantiation 'stlpd_std::vector<_Tp>'
 being compil
 ed
         with
         [
             _Tp=boost::detail::future_waiter::registered_waiter
         ]
 f:\dev\adoxx512_boost\adoxx\include\stlport\stl/type_traits.h(250) : error
 C2139: 'boost::detail::future_waiter::registered_waiter' : an undefined
 class is no
 t allowed as an argument to compiler intrinsic type trait
 '__has_trivial_copy'
         f:\dev\adoxx512_boost\adoxx\include\boost/thread/future.hpp(395) :
 see declaration of 'boost::detail::future_waiter::registered_waiter'
 f:\dev\adoxx512_boost\adoxx\include\stlport\stl/type_traits.h(251) : error
 C2139: 'boost::detail::future_waiter::registered_waiter' : an undefined
 class is no
 t allowed as an argument to compiler intrinsic type trait
 '__has_trivial_assign'
         f:\dev\adoxx512_boost\adoxx\include\boost/thread/future.hpp(395) :
 see declaration of 'boost::detail::future_waiter::registered_waiter'
 f:\dev\adoxx512_boost\adoxx\include\stlport\stl/type_traits.h(252) : error
 C2139: 'boost::detail::future_waiter::registered_waiter' : an undefined
 class is no
 t allowed as an argument to compiler intrinsic type trait
 '__has_trivial_destructor'
         f:\dev\adoxx512_boost\adoxx\include\boost/thread/future.hpp(395) :
 see declaration of 'boost::detail::future_waiter::registered_waiter'
 f:\dev\adoxx512_boost\adoxx\include\stlport\stl/type_traits.h(253) : error
 C2139: 'boost::detail::future_waiter::registered_waiter' : an undefined
 class is no
 t allowed as an argument to compiler intrinsic type trait '__is_pod'
         f:\dev\adoxx512_boost\adoxx\include\boost/thread/future.hpp(395) :
 see declaration of 'boost::detail::future_waiter::registered_waiter'


 workaround

         class future_waiter
         {
             struct registered_waiter;
 // typedef std::vector<registered_waiter>::size_type
 count_type;
             typedef std::size_t count_type;

             struct registered_waiter
             {
                 boost::shared_ptr<detail::future_object_base> future;
                 detail::future_object_base::waiter_list::iterator
 wait_iterator;
                 count_type index;

 registered_waiter(boost::shared_ptr<detail::future_object_base> const&
 future_,
 detail::future_object_base::waiter_list::iterator wait_iterator_,
                                   count_type index_):
 future(future_),wait_iterator(wait_iterator_),index(index_)
                 {}

             };

 BOOST_MPL_ASSERT((boost::is_same<std::vector<registered_waiter>::size_type,std::size_t>));

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/5274>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:05 UTC