Boost C++ Libraries: Ticket #6102: call to fusion::zip() does not compile with BOOST_RESULT_OF_USE_DECLTYPE https://svn.boost.org/trac10/ticket/6102 <p> The following trivial use of fusion::zip() fails to compile with -DBOOST_RESULT_OF_USE_DECLTYPE </p> <pre class="wiki">#include &lt;boost/fusion/algorithm/transformation/zip.hpp&gt; #include &lt;boost/fusion/container/vector.hpp&gt; using namespace boost::fusion; int main() { vector&lt;int,char&gt; v1(1, 'a'); vector&lt;int,char&gt; v2(2, 'b'); zip(v1, v2); } </pre><p> Errors: </p> <pre class="wiki">In file included from boost/boost/preprocessor/iteration/detail/iter/forward1.hpp:57:0, from boost/boost/utility/result_of.hpp:95, from boost/boost/fusion/support/detail/segmented_fold_until_impl.hpp :13, from boost/boost/fusion/sequence/intrinsic/detail/segmented_begin_impl .hpp:15, from boost/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp :10, from boost/boost/fusion/sequence/intrinsic/begin.hpp:17, from boost/boost/fusion/iterator/segmented_iterator.hpp:12, from boost/boost/fusion/sequence/intrinsic/detail/segmented_end.hpp :11, from boost/boost/fusion/sequence/intrinsic/end.hpp:17, from boost/boost/fusion/mpl/back.hpp:11, from boost/boost/fusion/mpl.hpp:15, from boost/boost/fusion/view/detail/strictest_traversal.hpp:14, from boost/boost/fusion/view/zip_view/zip_view.hpp:14, from boost/boost/fusion/view/zip_view.hpp:11, from boost/boost/fusion/algorithm/transformation/zip.hpp:12, from test.cpp:1: boost/boost/utility/detail/result_of_iterate.hpp: In instantiation of 'boost::detail::cpp0x_result_of_impl&lt; boost::fusion::detail::strictest_traversal_impl( const boost::fusion::random_access_traversal_tag &amp; , const boost::fusion::vector&lt;int, char&gt; &amp; ) &gt;': boost/boost/utility/detail/result_of_iterate.hpp:41:8: required from 'boost::result_of&lt; boost::fusion::detail::strictest_traversal_impl( const boost::fusion::random_access_traversal_tag &amp; , const boost::fusion::vector&lt;int, char&gt; &amp; ) &gt;' boost/boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp:267:13: required from 'boost::fusion::detail::result_of_first_unrolledfold&lt; const boost::fusion::random_access_traversal_tag &amp; , boost::fusion::filter_iterator&lt; boost::fusion::forward_traversal_tag , boost::fusion::vector_iterator&lt; boost::fusion::vector2&lt; const boost::fusion::vector&lt;int, char&gt; &amp; , const boost::fusion::vector&lt;int, char&gt; &amp; &gt;, 0 &gt;, boost::fusion::vector_iterator&lt; boost::fusion::vector2&lt; const boost::fusion::vector&lt;int, char&gt; &amp; , const boost::fusion::vector&lt;int, char&gt; &amp; &gt;, 2 &gt;, boost::mpl::not_&lt; boost::is_same&lt; mpl_::arg&lt;-0x00000000000000001&gt; , const boost::fusion::unused_type &amp; &gt; &gt; &gt;, boost::fusion::detail::strictest_traversal_impl, 2 &gt;' boost/boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp:279:13: required from 'boost::fusion::detail::fold_impl&lt; 2, const boost::fusion::random_access_traversal_tag &amp; , boost::fusion::filter_view&lt; boost::fusion::vector2&lt; const boost::fusion::vector&lt;int, char&gt; &amp; , const boost::fusion::vector&lt;int, char&gt; &amp; &gt;, boost::mpl::not_&lt; boost::is_same&lt; mpl_::arg&lt;-0x00000000000000001&gt; , const boost::fusion::unused_type &amp; &gt; &gt; &gt;, boost::fusion::detail::strictest_traversal_impl &gt;' boost/boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp:306:16: required from 'boost::fusion::detail::result_of_fold&lt; boost::fusion::filter_view&lt; boost::fusion::vector2&lt; const boost::fusion::vector&lt;int, char&gt; &amp; , const boost::fusion::vector&lt;int, char&gt; &amp; &gt;, boost::mpl::not_&lt; boost::is_same&lt; mpl_::arg&lt;-0x00000000000000001&gt; , const boost::fusion::unused_type &amp; &gt; &gt; &gt;, boost::fusion::random_access_traversal_tag , boost::fusion::detail::strictest_traversal_impl, false &gt;' boost/boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp:320:16: required from 'boost::fusion::result_of::fold&lt; boost::fusion::filter_view&lt; boost::fusion::vector2&lt; const boost::fusion::vector&lt;int, char&gt; &amp; , const boost::fusion::vector&lt;int, char&gt; &amp; &gt;, boost::mpl::not_&lt; boost::is_same&lt; mpl_::arg&lt;-0x00000000000000001&gt; , const boost::fusion::unused_type &amp; &gt; &gt; &gt;, boost::fusion::random_access_traversal_tag , boost::fusion::detail::strictest_traversal_impl &gt;' boost/boost/fusion/view/detail/strictest_traversal.hpp:59:16: required from 'boost::fusion::detail::strictest_traversal&lt; boost::fusion::filter_view&lt; boost::fusion::vector2&lt; const boost::fusion::vector&lt;int, char&gt; &amp; , const boost::fusion::vector&lt;int, char&gt; &amp; &gt;, boost::mpl::not_&lt; boost::is_same&lt; mpl_::arg&lt;-0x00000000000000001&gt; , const boost::fusion::unused_type &amp; &gt; &gt; &gt; &gt;' boost/boost/fusion/view/zip_view/zip_view.hpp:99:76: required from 'boost::fusion::zip_view&lt; boost::fusion::vector2&lt; const boost::fusion::vector&lt;int, char&gt; &amp; , const boost::fusion::vector&lt;int, char&gt; &amp; &gt; &gt;' test.cpp:10:15: required from here boost/boost/utility/detail/result_of_iterate.hpp:64:5: error: no match for call to '(boost::fusion::detail::strictest_traversal_impl) ( const boost::fusion::random_access_traversal_tag &amp; , const boost::fusion::vector&lt;int, char&gt; &amp; )' In file included from boost/boost/preprocessor/iteration/detail/iter/forward1.hpp:52:0, from boost/boost/utility/result_of.hpp:95, from boost/boost/fusion/support/detail/segmented_fold_until_impl.hpp :13, from boost/boost/fusion/sequence/intrinsic/detail/segmented_begin_impl .hpp:15, from boost/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp :10, from boost/boost/fusion/sequence/intrinsic/begin.hpp:17, from boost/boost/fusion/iterator/segmented_iterator.hpp:12, from boost/boost/fusion/sequence/intrinsic/detail/segmented_end.hpp :11, from boost/boost/fusion/sequence/intrinsic/end.hpp:17, from boost/boost/fusion/mpl/back.hpp:11, from boost/boost/fusion/mpl.hpp:15, from boost/boost/fusion/view/detail/strictest_traversal.hpp:14, from boost/boost/fusion/view/zip_view/zip_view.hpp:14, from boost/boost/fusion/view/zip_view.hpp:11, from boost/boost/fusion/algorithm/transformation/zip.hpp:12, from test.cpp:1: boost/boost/utility/detail/result_of_iterate.hpp: In instantiation of 'boost::detail::cpp0x_result_of_impl&lt; boost::fusion::detail::seq_ref_size( const boost::fusion::vector&lt;int, char&gt; &amp; ) &gt;': boost/boost/utility/detail/result_of_iterate.hpp:41:8: required from 'boost::result_of&lt; boost::fusion::detail::seq_ref_size( const boost::fusion::vector&lt;int, char&gt; &amp; ) &gt;' boost/boost/fusion/view/transform_view/detail/apply_transform_result.hpp:28:20: required from 'boost::fusion::detail::apply_transform_result&lt; boost::fusion::detail::seq_ref_size &gt;::apply&lt;const boost::fusion::vector&lt;int, char&gt; &amp;&gt;' boost/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp:36:8: required from 'boost::mpl::apply_wrap1&lt; boost::fusion::detail::apply_transform_result&lt; boost::fusion::detail::seq_ref_size &gt;, const boost::fusion::vector&lt;int, char&gt; &amp; &gt;' boost/boost/mpl/aux_/preprocessed/gcc/apply.hpp:42:8: required from 'boost::mpl::apply1&lt; boost::fusion::detail::apply_transform_result&lt; boost::fusion::detail::seq_ref_size &gt;, const boost::fusion::vector&lt;int, char&gt; &amp; &gt;' boost/boost/mpl/aux_/preprocessed/gcc/apply.hpp:59:8: required from 'boost::mpl::apply&lt; boost::fusion::detail::apply_transform_result&lt; boost::fusion::detail::seq_ref_size &gt;, const boost::fusion::vector&lt;int, char&gt; &amp; &gt;' boost/boost/fusion/view/transform_view/detail/deref_impl.hpp:37:79: required from 'boost::fusion::extension::deref_impl&lt; boost::fusion::transform_view_iterator_tag &gt;::apply&lt; boost::fusion::transform_view_iterator&lt; boost::fusion::filter_iterator&lt; boost::fusion::forward_traversal_tag , boost::fusion::vector_iterator&lt; boost::fusion::vector2&lt; const boost::fusion::vector&lt;int, char&gt; &amp; , const boost::fusion::vector&lt;int, char&gt; &amp; &gt;, 0 &gt;, boost::fusion::vector_iterator&lt; boost::fusion::vector2&lt; const boost::fusion::vector&lt;int, char&gt; &amp; , const boost::fusion::vector&lt;int, char&gt; &amp; &gt;, 2 &gt;, boost::mpl::not_&lt; boost::is_same&lt; mpl_::arg&lt;-0x00000000000000001&gt; , const boost::fusion::unused_type &amp; &gt; &gt; &gt;, boost::fusion::detail::seq_ref_size &gt; &gt;' boost/boost/fusion/iterator/deref.hpp:50:16: required from 'boost ::fusion::result_of::deref&lt; boost::fusion::transform_view_iterator&lt; boost::fusion::filter_iterator&lt; boost::fusion::forward_traversal_tag , boost::fusion::vector_iterator&lt; boost::fusion::vector2&lt; const boost::fusion::vector&lt;int, char&gt; &amp; , const boost::fusion::vector&lt;int, char&gt; &amp; &gt;, 0 &gt;, boost::fusion::vector_iterator&lt; boost::fusion::vector2&lt; const boost::fusion::vector&lt;int, char&gt; &amp; , const boost::fusion::vector&lt;int, char&gt; &amp; &gt;, 2 &gt;, boost::mpl::not_&lt; boost::is_same&lt; mpl_::arg&lt;-0x00000000000000001&gt; , const boost::fusion::unused_type &amp; &gt; &gt; &gt;, boost::fusion::detail::seq_ref_size &gt; &gt;' boost/boost/fusion/sequence/intrinsic/front.hpp:22:16: required from 'boost::fusion::result_of::front&lt; boost::fusion::transform_view&lt; boost::fusion::filter_view&lt; boost::fusion::vector2&lt; const boost::fusion::vector&lt;int, char&gt; &amp; , const boost::fusion::vector&lt;int, char&gt; &amp; &gt;, boost::mpl::not_&lt; boost::is_same&lt; mpl_::arg&lt;-0x00000000000000001&gt; , const boost::fusion::unused_type &amp; &gt; &gt; &gt;, boost::fusion::detail::seq_ref_size, boost::fusion::void_ &gt; &gt;' boost/boost/fusion/view/zip_view/zip_view.hpp:87:117: required from 'boost::fusion::detail::min_size&lt; boost::fusion::filter_view&lt; boost::fusion::vector2&lt; const boost::fusion::vector&lt;int, char&gt; &amp; , const boost::fusion::vector&lt;int, char&gt; &amp; &gt;, boost::mpl::not_&lt; boost::is_same&lt; mpl_::arg&lt;-0x00000000000000001&gt; , const boost::fusion::unused_type &amp; &gt; &gt; &gt; &gt;' boost/boost/fusion/view/zip_view/zip_view.hpp:104:65: required from 'boost::fusion::zip_view&lt; boost::fusion::vector2&lt; const boost::fusion::vector&lt;int, char&gt; &amp; , const boost::fusion::vector&lt;int, char&gt; &amp; &gt; &gt;' test.cpp:10:15: required from here boost/boost/utility/detail/result_of_iterate.hpp:64:5: error: no match for call to '(boost::fusion::detail::seq_ref_size) ( const boost::fusion::vector&lt;int, char&gt; &amp; )' </pre> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/6102 Trac 1.4.3 zeratul976@… Mon, 07 Nov 2011 20:44:05 GMT <link>https://svn.boost.org/trac10/ticket/6102#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/6102#comment:1</guid> <description> <p> Michel Morin's patch from this post fixes the problem: </p> <p> <a class="ext-link" href="http://thread.gmane.org/gmane.comp.parsers.spirit.general/23386/focus=23389"><span class="icon">​</span>http://thread.gmane.org/gmane.comp.parsers.spirit.general/23386/focus=23389</a> </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Joel de Guzman</dc:creator> <pubDate>Mon, 07 Nov 2011 22:16:51 GMT</pubDate> <title>status changed; resolution set https://svn.boost.org/trac10/ticket/6102#comment:2 https://svn.boost.org/trac10/ticket/6102#comment:2 <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> patches applied. please check. </p> Ticket