Boost C++ Libraries: Ticket #3337: mpl::has_push_back_arg/mpl:::has_push_front_arg are incomplete types https://svn.boost.org/trac10/ticket/3337 <p> boost::mpl::has_push_back_arg (<a class="ext-link" href="https://svn.boost.org/trac/boost/browser/trunk/boost/mpl/aux_/push_back_impl.hpp?rev=54948#L28"><span class="icon">​</span>https://svn.boost.org/trac/boost/browser/trunk/boost/mpl/aux_/push_back_impl.hpp?rev=54948#L28</a>) and boost::mpl::push_front_arg (<a class="ext-link" href="https://svn.boost.org/trac/boost/browser/trunk/boost/mpl/aux_/push_front_impl.hpp?rev=54948#L28"><span class="icon">​</span>https://svn.boost.org/trac/boost/browser/trunk/boost/mpl/aux_/push_front_impl.hpp?rev=54948#L28</a>) are both declared but not defined. This leads to a compiler error when using mpl::has_push_back (<a class="ext-link" href="https://svn.boost.org/trac/boost/browser/trunk/boost/mpl/push_back.hpp?rev=54948#L40"><span class="icon">​</span>https://svn.boost.org/trac/boost/browser/trunk/boost/mpl/push_back.hpp?rev=54948#L40</a>) / mpl::has_push_front (<a class="ext-link" href="https://svn.boost.org/trac/boost/browser/trunk/boost/mpl/push_front.hpp?rev=54948#L40"><span class="icon">​</span>https://svn.boost.org/trac/boost/browser/trunk/boost/mpl/push_front.hpp?rev=54948#L40</a>) on a mpl sequence (to be precise a fusion sequence) which needs complete 'argument' types when being instanced. </p> <p> Minimal testcase:<br /> #include &lt;boost/mpl/transform.hpp&gt;<br /> #include &lt;boost/mpl/placeholders.hpp&gt;<br /> #include &lt;boost/fusion/container/vector.hpp&gt;<br /> #include &lt;boost/fusion/mpl.hpp&gt;<br /> boost::mpl::transform&lt;boost::fusion::vector&lt;&gt;,boost::mpl::_1&gt;::type t; </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/3337 Trac 1.4.3 Christopher Schmidt Tue, 11 Aug 2009 17:58:03 GMT cc set https://svn.boost.org/trac10/ticket/3337#comment:1 https://svn.boost.org/trac10/ticket/3337#comment:1 <ul> <li><strong>cc</strong> <span class="trac-author">Christopher Schmidt</span> added </li> </ul> Ticket Steven Watanabe Wed, 19 Aug 2009 22:41:04 GMT <link>https://svn.boost.org/trac10/ticket/3337#comment:2 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/3337#comment:2</guid> <description> <p> I don't think that it's safe in general to rely on the default implementation of has_push_back for sequences where push_back has any requirements on the arguments. I guess it doesn't hurt to make them complete types, though, since this is a pretty minimal requirement. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Steven Watanabe</dc:creator> <pubDate>Wed, 19 Aug 2009 22:52:36 GMT</pubDate> <title>status changed; resolution set https://svn.boost.org/trac10/ticket/3337#comment:3 https://svn.boost.org/trac10/ticket/3337#comment:3 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">fixed</span> </li> </ul> <p> (In <a class="changeset" href="https://svn.boost.org/trac10/changeset/55672" title="Provide definitions for the dummy structs used by has_push_back_impl ...">[55672]</a>) Provide definitions for the dummy structs used by has_push_back_impl and has_push_front_impl so that they work with Fusion containers. Fixes <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3337" title="#3337: Bugs: mpl::has_push_back_arg/mpl:::has_push_front_arg are incomplete types (closed: fixed)">#3337</a>. </p> Ticket