Boost C++ Libraries: Ticket #7513: fusion::convert() tries to call convert_impl::call but there isn't https://svn.boost.org/trac10/ticket/7513 <p> fusion::convert() tries to call convert_impl::call but there isn't. Is seems that mistake of convert_impl::apply&lt;seq&gt;::call and patch is here. </p> <pre class="wiki">diff --git a/boost/fusion/sequence/convert.hpp b/boost/fusion/sequence/convert.hpp index 5264810..e7a2e38 100644 --- a/boost/fusion/sequence/convert.hpp +++ b/boost/fusion/sequence/convert.hpp @@ -20,11 +20,11 @@ namespace boost { namespace fusion template &lt;typename Tag, typename Sequence&gt; struct convert { - typedef typename extension::convert_impl&lt;Tag&gt; gen; - typedef typename - gen::template apply&lt;Sequence&gt;::type - type; + extension::convert_impl&lt;Tag&gt;::template apply&lt;Sequence&gt; + gen; + + typedef typename gen::type type; }; } </pre> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/7513 Trac 1.4.3 Joel de Guzman Wed, 17 Oct 2012 05:48:32 GMT <link>https://svn.boost.org/trac10/ticket/7513#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7513#comment:1</guid> <description> <p> I don't see any problem with the original code. Which compiler? Do you have a test case that exhibits this problem? </p> </description> <category>Ticket</category> </item> <item> <author>Kohei Takahashi <flast@…></author> <pubDate>Wed, 17 Oct 2012 06:40:43 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/7513#comment:2 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7513#comment:2</guid> <description> <p> I tried with gcc 4.8,4.7,4.6 and clang 3.2. </p> <p> Simple testcase is here. </p> <pre class="wiki">#include &lt;boost/fusion/container/vector.hpp&gt; #include &lt;boost/fusion/container/list.hpp&gt; #include &lt;boost/fusion/sequence/convert.hpp&gt; int main() { boost::fusion::vector&lt;int&gt; v(0); boost::fusion::convert&lt;boost::fusion::cons_tag&gt;(v); } </pre><p> compiler outputs: </p> <pre class="wiki">$ g++-4.8.0 -fmax-errors=1 hoge.cpp In file included from hoge.cpp:3:0: /usr/local/include/boost/fusion/sequence/convert.hpp: In instantiation of 'typename boost::fusion::result_of::convert&lt;Tag, Sequence&gt;::type boost::fusion::convert(Sequence&amp;) [with Tag = boost::fusion::cons_tag; Sequence = boost::fusion::vector&lt;int&gt;; typename boost::fusion::result_of::convert&lt;Tag, Sequence&gt;::type = boost::fusion::cons&lt;int, boost::fusion::nil&gt;]': hoge.cpp:8:54: required from here /usr/local/include/boost/fusion/sequence/convert.hpp:36:29: error: 'call' is not a member of 'gen {aka boost::fusion::extension::convert_impl&lt;boost::fusion::cons_tag&gt;}' return gen::call(seq); ^ compilation terminated due to -fmax-errors=1. $ g++-4.7.3 -fmax-errors=1 hoge.cpp In file included from hoge.cpp:3:0: /usr/local/include/boost/fusion/sequence/convert.hpp: In instantiation of 'typename boost::fusion::result_of::convert&lt;Tag, Sequence&gt;::type boost::fusion::convert(Sequence&amp;) [with Tag = boost::fusion::cons_tag; Sequence = boost::fusion::vector&lt;int&gt;; typename boost::fusion::result_of::convert&lt;Tag, Sequence&gt;::type = boost::fusion::cons&lt;int, boost::fusion::nil&gt;]': hoge.cpp:8:54: required from here /usr/local/include/boost/fusion/sequence/convert.hpp:36:29: error: 'call' is not a member of 'gen {aka boost::fusion::extension::convert_impl&lt;boost::fusion::cons_tag&gt;}' compilation terminated due to -fmax-errors=1. $ g++-4.6 -fmax-errors=1 hoge.cpp In file included from hoge.cpp:3:0: /usr/local/include/boost/fusion/sequence/convert.hpp: In function ‘typename boost::fusion::result_of::convert&lt;Tag, Sequence&gt;::type boost::fusion::convert(Sequence&amp;) [with Tag = boost::fusion::cons_tag, Sequence = boost::fusion::vector&lt;int&gt;, typename boost::fusion::result_of::convert&lt;Tag, Sequence&gt;::type = boost::fusion::cons&lt;int, boost::fusion::nil&gt;]’: hoge.cpp:8:54: instantiated from here /usr/local/include/boost/fusion/sequence/convert.hpp:36:29: error: ‘call’ is not a member of ‘gen {aka boost::fusion::extension::convert_impl&lt;boost::fusion::cons_tag&gt;}’ compilation terminated due to -fmax-errors=1. $ clang++ hoge.cpp In file included from hoge.cpp:3: /usr/local/include/boost/fusion/sequence/convert.hpp:36:21: error: no member named 'call' in 'boost::fusion::extension::convert_impl&lt;boost::fusion::cons_tag&gt;' return gen::call(seq); ~~~~~^ hoge.cpp:8:5: note: in instantiation of function template specialization 'boost::fusion::convert&lt;boost::fusion::cons_tag, boost::fusion::vector&lt;int, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_&gt; &gt;' requested here boost::fusion::convert&lt;boost::fusion::cons_tag&gt;(v); ^ 1 error generated. </pre> </description> <category>Ticket</category> </item> <item> <author>Brian Vandenberg <phantall+boost@…></author> <pubDate>Tue, 01 Oct 2013 22:59:50 GMT</pubDate> <title>cc set https://svn.boost.org/trac10/ticket/7513#comment:3 https://svn.boost.org/trac10/ticket/7513#comment:3 <ul> <li><strong>cc</strong> <span class="trac-author">phantall+boost@…</span> added </li> </ul> <p> I can reproduce this with Solaris Studio 12.3 (with all 3 STL implementations), gcc 4.4.6, and clang version 3.2. </p> Ticket Brian Vandenberg <phantall+boost@…> Tue, 01 Oct 2013 23:04:26 GMT <link>https://svn.boost.org/trac10/ticket/7513#comment:4 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7513#comment:4</guid> <description> <p> ... and I can confirm that the suggested fix resolves the problem for all 3 compilers. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Joel de Guzman</dc:creator> <pubDate>Tue, 01 Oct 2013 23:42:52 GMT</pubDate> <title>status changed; resolution set https://svn.boost.org/trac10/ticket/7513#comment:5 https://svn.boost.org/trac10/ticket/7513#comment:5 <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> patch applied. thanks! </p> Ticket