Boost C++ Libraries: Ticket #5274: failed to compile future.hpp with stlport 5.1.5 under msvc8.1, because of undefined class https://svn.boost.org/trac10/ticket/5274 <p> 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 '<span class="underline">has_trivial_constructor' </span></p> <blockquote> <p> 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::<span class="underline">type_traits&lt;_Tp&gt;' being c </span></p> </blockquote> <p> ompiled </p> <blockquote> <p> with [ </p> <blockquote> <p> _Tp=boost::detail::future_waiter::registered_waiter </p> </blockquote> <p> ] f:\dev\adoxx512_boost\adoxx\include\stlport\stl/debug/_iterator.h(381) : see reference to class template instantiation 'stlpd_std::priv::_NonDbg_vecto </p> </blockquote> <p> r&lt;_Tp,_Alloc&gt;' being compiled </p> <blockquote> <p> with [ </p> <blockquote> <p> _Tp=boost::detail::future_waiter::registered_waiter, _Alloc=stlpd_std::allocator&lt;boost::detail::future_waiter::registered_waiter&gt; </p> </blockquote> <p> ] f:\dev\adoxx512_boost\adoxx\include\stlport\stl/debug/_vector.h(106) : see reference to class template instantiation 'stlpd_std::priv::<span class="underline">construct_che </span></p> </blockquote> <p> cker&lt;_Container&gt;' being compiled </p> <blockquote> <p> with [ </p> <blockquote> <p> _Container=stlpd_std::priv::_NonDbg_vector&lt;boost::detail::future_waiter::registered_waiter,stlpd_std::allocator&lt;boost::detail::future_waiter::regi </p> </blockquote> </blockquote> <p> stered_waiter&gt;&gt; </p> <blockquote> <p> ] f:\dev\adoxx512_boost\adoxx\include\boost/thread/future.hpp(396) : see reference to class template instantiation 'stlpd_std::vector&lt;_Tp&gt;' being compil </p> </blockquote> <p> ed </p> <blockquote> <p> with [ </p> <blockquote> <p> _Tp=boost::detail::future_waiter::registered_waiter </p> </blockquote> <p> ] </p> </blockquote> <p> 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 '<span class="underline">has_trivial_copy' </span></p> <blockquote> <p> f:\dev\adoxx512_boost\adoxx\include\boost/thread/future.hpp(395) : see declaration of 'boost::detail::future_waiter::registered_waiter' </p> </blockquote> <p> 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 '<span class="underline">has_trivial_assign' </span></p> <blockquote> <p> f:\dev\adoxx512_boost\adoxx\include\boost/thread/future.hpp(395) : see declaration of 'boost::detail::future_waiter::registered_waiter' </p> </blockquote> <p> 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 '<span class="underline">has_trivial_destructor' </span></p> <blockquote> <p> f:\dev\adoxx512_boost\adoxx\include\boost/thread/future.hpp(395) : see declaration of 'boost::detail::future_waiter::registered_waiter' </p> </blockquote> <p> 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 '<span class="underline">is_pod' </span></p> <blockquote> <p> f:\dev\adoxx512_boost\adoxx\include\boost/thread/future.hpp(395) : see declaration of 'boost::detail::future_waiter::registered_waiter' </p> </blockquote> <p> workaround </p> <blockquote> <p> class future_waiter { </p> <blockquote> <p> struct registered_waiter; </p> </blockquote> </blockquote> <p> <em> typedef std::vector&lt;registered_waiter&gt;::size_type count_type; </em></p> <blockquote> <p> typedef std::size_t count_type; </p> </blockquote> <p> </p> <blockquote> <p> struct registered_waiter { </p> <blockquote> <p> boost::shared_ptr&lt;detail::future_object_base&gt; future; detail::future_object_base::waiter_list::iterator wait_iterator; count_type index; </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> registered_waiter(boost::shared_ptr&lt;detail::future_object_base&gt; const&amp; future_, </p> <blockquote> <p> detail::future_object_base::waiter_list::iterator wait_iterator_, count_type index_): </p> </blockquote> <p> future(future_),wait_iterator(wait_iterator_),index(index_) </p> </blockquote> <p> {} </p> </blockquote> <blockquote> <p> }; </p> </blockquote> <p> </p> <blockquote> <p> BOOST_MPL_ASSERT((boost::is_same&lt;std::vector&lt;registered_waiter&gt;::size_type,std::size_t&gt;)); </p> </blockquote> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/5274 Trac 1.4.3 viboes Sun, 04 Dec 2011 18:33:25 GMT owner, status changed; cc set https://svn.boost.org/trac10/ticket/5274#comment:1 https://svn.boost.org/trac10/ticket/5274#comment:1 <ul> <li><strong>cc</strong> <span class="trac-author">viboes</span> added </li> <li><strong>owner</strong> changed from <span class="trac-author">Anthony Williams</span> to <span class="trac-author">viboes</span> </li> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">assigned</span> </li> </ul> <p> The proposed workaround corresponds to the existing code. </p> <p> Could you tell us if the version 1.49 has yet the error? </p> Ticket anonymous Fri, 09 Dec 2011 11:23:20 GMT type changed https://svn.boost.org/trac10/ticket/5274#comment:2 https://svn.boost.org/trac10/ticket/5274#comment:2 <ul> <li><strong>type</strong> <span class="trac-field-old">Bugs</span> → <span class="trac-field-new">Support Requests</span> </li> </ul> <p> Moved to support request until resolution clarified. </p> Ticket viboes Sat, 31 Dec 2011 15:05:11 GMT status changed; resolution set; milestone deleted https://svn.boost.org/trac10/ticket/5274#comment:3 https://svn.boost.org/trac10/ticket/5274#comment:3 <ul> <li><strong>status</strong> <span class="trac-field-old">assigned</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">worksforme</span> </li> <li><strong>milestone</strong> <span class="trac-field-deleted">To Be Determined</span> </li> </ul> <p> Closed as no answer received. Please reopen it once you have checked it on 1.49 (trunk). </p> Ticket s.seifried@… Fri, 27 Jul 2012 11:18:23 GMT status, version changed; resolution deleted https://svn.boost.org/trac10/ticket/5274#comment:4 https://svn.boost.org/trac10/ticket/5274#comment:4 <ul> <li><strong>status</strong> <span class="trac-field-old">closed</span> → <span class="trac-field-new">reopened</span> </li> <li><strong>version</strong> <span class="trac-field-old">Boost 1.46.0</span> → <span class="trac-field-new">Boost 1.50.0</span> </li> <li><strong>resolution</strong> <span class="trac-field-deleted">worksforme</span> </li> </ul> <p> Still the same problem in 1.50.0. Changing the type trait "typedef std::vector&lt;registered_waiter&gt;::size_type count_type;" to the specific type "typedef std::size_t count_type;" fixed the problem as a quick workaround. </p> <p> Environment is still the same, stlport 5.1.5 and msvc 8.1. </p> Ticket viboes Sun, 12 Aug 2012 19:01:54 GMT <link>https://svn.boost.org/trac10/ticket/5274#comment:5 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5274#comment:5</guid> <description> <p> Could you add the error relative to the fact the stlport 5.1.5 doesn't defines std::vector&lt;T&gt;::size_type? </p> <p> Are there any compiler flags that can be tested to check for stlport 5.1.5? </p> </description> <category>Ticket</category> </item> <item> <author>s.seifried@…</author> <pubDate>Sun, 12 Aug 2012 20:07:28 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5274#comment:6 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5274#comment:6</guid> <description> <p> Just double checked, but stlport 5.1.5 does define size_type, and it is a public typedef to size_t. So this is fine from my point of view. </p> <p> boost 1.50.0 was compiled without any additional compiler flags. If you want to try it out yourself, just grab a copy from stlport 5.1.5 from sourceforge and add it to the appropriate place in user config jam. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>viboes</dc:creator> <pubDate>Wed, 15 Aug 2012 20:38:53 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/5274#comment:7 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5274#comment:7</guid> <description> <p> I think I've understood what is happening. I will replace </p> <pre class="wiki">struct registered_waiter; typedef std::vector&lt;registered_waiter&gt;::size_type count_type; </pre><p> by </p> <pre class="wiki">struct registered_waiter; typedef std::vector&lt;int&gt;::size_type count_type; </pre><p> As the type std::vector&lt;T&gt;::size_type should not depend on T. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>viboes</dc:creator> <pubDate>Wed, 15 Aug 2012 20:46:14 GMT</pubDate> <title>type changed; milestone set https://svn.boost.org/trac10/ticket/5274#comment:8 https://svn.boost.org/trac10/ticket/5274#comment:8 <ul> <li><strong>type</strong> <span class="trac-field-old">Support Requests</span> → <span class="trac-field-new">Bugs</span> </li> <li><strong>milestone</strong> → <span class="trac-field-new">Boost 1.52.0</span> </li> </ul> Ticket viboes Wed, 15 Aug 2012 21:30:04 GMT <link>https://svn.boost.org/trac10/ticket/5274#comment:9 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/5274#comment:9</guid> <description> <p> Committed in trunk revision 80053. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>viboes</dc:creator> <pubDate>Sun, 09 Sep 2012 13:13:10 GMT</pubDate> <title>status changed; resolution set https://svn.boost.org/trac10/ticket/5274#comment:10 https://svn.boost.org/trac10/ticket/5274#comment:10 <ul> <li><strong>status</strong> <span class="trac-field-old">reopened</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">fixed</span> </li> </ul> <p> Merged from trunk <a class="changeset" href="https://svn.boost.org/trac10/changeset/80450" title="Thread: merge from trunk: 1.52">[80450]</a>. </p> Ticket