RE: [boost] Re: ETI bug and iterators

-----Original Message----- From: David Abrahams
"Yitzhak Sapir" <yitzhak.sapir@actimize.com> writes:
Hello.
I am in the process of upgrading code to use boost 1.31.0 for MSVC6.5. During this process I happened upon minimum_category.hpp which contains "ETI workarounds". Now, it seems that the ETI workarounds cause the compilation to fail, with the error message: constant expression expected. Particularly, we are creating zip iterators to two STLPort vectors. In debug iterator mode, I get the following error. (minimum_category.hpp was modified a bit
Post the error you get with an unmodified minimum_category.hpp, please. It's hard to analyze when the line numbers are wrong.
../../3rdParty\boost/iterator/detail/minimum_category.hpp(86) : error C2039: 'apply' : is not a member of '?$minimum_category_impl@$$00' ../../3rdParty\boost/iterator/detail/minimum_category.hpp(97) : see reference to class template instantiation 'boost::detail::minimum_category<struct boost::random_access_traversal_tag,struct boost::random_access_traversal_tag>' being compil ed ../../3rdParty\boost/mpl/aux_/preprocessed/msvc60/apply.hpp(88) : see reference to class template instantiation 'boost::detail::minimum_category<struct boost::mpl::arg<1>,struct boost::mpl::arg<2> >::apply<struct boost::random_access_travers al_tag,struct boost::random_access_traversal_tag>' being compiled ../../3rdParty\boost/mpl/aux_/preprocessed/msvc60/apply.hpp(101) : see reference to class template instantiation 'boost::mpl::aux::msvc_apply2<struct boost::detail::minimum_category<struct boost::mpl::arg<1>,struct boost::mpl::arg<2> > >::re sult_<struct boost::random_access_traversal_tag,struct boost::random_access_traversal_tag>' being compiled ../../3rdParty\boost/iterator/zip_iterator.hpp(173) : see reference to class template instantiation 'boost::mpl::apply2<struct boost::detail::minimum_category<struct boost::mpl::arg<1>,struct boost::mpl::arg<2> >,struct boost::random_access_ traversal_tag,struct boost::random_access_traversal_tag>' being compiled ../../3rdParty\boost/mpl/aux_/preprocessed/msvc60/apply.hpp(9) : see reference to class template instantiation 'boost::detail::tuple_impl_specific::tuple_meta_accumulate_impl<struct boost::tuples::cons<struct boost::random_access_traversal_t ag,struct boost::tuples::null_type>,struct boost::detail::minimum_category<struct boost::mpl::arg<1>,struct boost::mpl::arg<2> >,struct boost::random_access_traversal_tag>' being compiled ../../3rdParty\boost/mpl/apply_if.hpp(39) : see reference to class template instantiation 'boost::mpl::apply0<struct boost::detail::tuple_impl_specific::tuple_meta_accumulate_impl<struct boost::tuples::cons<struct boost::random_access_traver sal_tag,struct boost::tuples::null_type>,struct boost::detail::minimum_category<struct boost::mpl::arg<1>,struct boost::mpl::arg<2> >,struct boost::random_access_traversal_tag> >' being compiled ../../3rdParty\boost/iterator/zip_iterator.hpp(198) : see reference to class template instantiation 'boost::mpl::apply_if<struct boost::mpl::or_<struct boost::is_same<struct boost::tuples::cons<struct boost::random_access_traversal_tag,struc t boost::tuples::null_type>,struct boost::tuples::null_type>,struct boost::is_same<struct boost::tuples::cons<struct boost::random_access_traversal_tag,struct boost::tuples::null_type>,int>,struct boost::mpl::bool_<0>,struct boost::mpl::bool_<0>,str uct boost::mpl::bool_<0> >,struct boost::mpl::identity<struct boost::random_access_traversal_tag>,struct boost::detail::tuple_impl_specific::tuple_meta_accumulate_impl<struct boost::tuples::cons<struct boost::random_access_traversal_tag,struct boost ::tuples::null_type>,struct boost::detail::minimum_category<struct boost::mpl::arg<1>,struct boost::mpl::arg<2> >,struct boost::random_access_traversal_tag> >' being compiled
but the problem is in the instantiation of boost::is_same<T1 or T2,int>). ^^^^^^^^
Huh? That's not valid regardless of any ETI workarounds.
That was my attempt to shorthand "either boost::is_same<T1,int> or boost::is_same<T2,int>"

"Yitzhak Sapir" <yitzhak.sapir@actimize.com> writes:
-----Original Message----- From: David Abrahams
"Yitzhak Sapir" <yitzhak.sapir@actimize.com> writes:
Hello.
I am in the process of upgrading code to use boost 1.31.0 for MSVC6.5. During this process I happened upon minimum_category.hpp which contains "ETI workarounds". Now, it seems that the ETI workarounds cause the compilation to fail, with the error message: constant expression expected. Particularly, we are creating zip iterators to two STLPort vectors. In debug iterator mode, I get the following error. (minimum_category.hpp was modified a bit
Post the error you get with an unmodified minimum_category.hpp, please. It's hard to analyze when the line numbers are wrong.
../../3rdParty\boost/iterator/detail/minimum_category.hpp(86) : error C2039: 'apply' : is not a member of '?$minimum_category_impl@$$00'
Does the enclosed patch fix it? -- Dave Abrahams Boost Consulting http://www.boost-consulting.com
participants (2)
-
David Abrahams
-
Yitzhak Sapir