Hi Jeremiah, I bet Aleksey would be happy to have a patch... on Tue Jun 19 2012, Jeremiah Willcock <jewillco-AT-osl.iu.edu> wrote:
I have noticed that several MPL algorithms do not work when applied to views unless an output iterator (inserter) is passed in explicitly. The error messages when you hit one of those cases are very non-obvious, however. It might be nice to have something in the documentation that talks about this issue and the workarounds for it. Here is an example of something that breaks:
#include <boost/mpl/vector_c.hpp> #include <boost/mpl/joint_view.hpp> #include <boost/mpl/sort.hpp> #include <boost/mpl/print.hpp>
typedef boost::mpl::vector_c<int, 2, 0> va; typedef boost::mpl::vector_c<int, 1, 3, -1, 5> vb; typedef boost::mpl::joint_view<va, vb> vc; typedef boost::mpl::sort<vc>::type vd;
The first important part of the error message with GCC 4.7.0 in C++11 mode is:
.../boost-svn/boost/mpl/clear.hpp: In instantiation of ‘struct boost::mpl::clear<boost::mpl::joint_view<boost::mpl::vector_c<int, 2l, 0l>, boost::mpl::vector_c<int, 1l, 3l, -1l, 5l> > >’: .../boost-svn/boost/mpl/sort.hpp:23:1: required from ‘struct boost::mpl::sort<boost::mpl::joint_view<boost::mpl::vector_c<int, 2l, 0l>, boost::mpl::vector_c<int, 1l, 3l, -1l, 5l> > >’ mpl_test.cpp:9:29: required from here .../boost-svn/boost/mpl/clear.hpp:28:8: error: invalid use of incomplete type ‘struct boost::mpl::clear_impl<boost::mpl::aux::joint_view_tag>::apply<boost::mpl::joint_view<boost::mpl::vector_c<int, 2l, 0l>, boost::mpl::vector_c<int, 1l, 3l, -1l, 5l> > >’
which seems to indicate that the default inserter needs a "real" container as input to the algorithm in order to know what container to use for the result. Since this limitation is probably unavoidable, some kind of note in the documentation might be useful. Thanks.
-- Jeremiah Willcock _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Dave Abrahams BoostPro Computing http://www.boostpro.com