RE: [boost] Re: ETI bug and iterators

-----Original Message----- From: David Abrahams
"Yitzhak Sapir" writes:
I can't send my own code, but the following code causes the previously described error with an unpatched minimum_category.hpp and an ICE when compiled with patched and unpatched minimum_category.hpp:
Not for me. Of course I had to remove the include of stdafx.h since I don't have that, but the first error is:
Dave Abrahams
The problem is with debug STLPort iterators, not the pointer iterators that you get in non-debug iterators mode. Yes, release compiles fine for me with the additional BOOST_TT_BROKEN_COMPILER_SPEC. But I also want to be able to compile in debug, with the debug STLPort iterators. :-) Also, when I speak of ETI workarounds removed, I speak only of the #ifdefed lines in the following block: typedef minimum_category_impl< # if BOOST_WORKAROUND(BOOST_MSVC, == 1200) // ETI workaround is_same<T2,int>::value || # endif ::boost::is_convertible<T1,T2>::value , ::boost::is_convertible<T2,T1>::value # if BOOST_WORKAROUND(BOOST_MSVC, == 1200) // ETI workaround || is_same<T1,int>::value # endif > outer; I didn't notice there was another ETI workaround before.

"Yitzhak Sapir" <yitzhak.sapir@actimize.com> writes:
-----Original Message----- From: David Abrahams
"Yitzhak Sapir" writes:
I can't send my own code, but the following code causes the previously described error with an unpatched minimum_category.hpp and an ICE when compiled with patched and unpatched minimum_category.hpp:
Not for me. Of course I had to remove the include of stdafx.h since I don't have that, but the first error is:
Dave Abrahams
The problem is with debug STLPort iterators, not the pointer iterators that you get in non-debug iterators mode. Yes, release compiles fine for me with the additional BOOST_TT_BROKEN_COMPILER_SPEC. But I also want to be able to compile in debug, with the debug STLPort iterators. :-)
Also, when I speak of ETI workarounds removed, I speak only of the #ifdefed lines in the following block:
typedef minimum_category_impl< # if BOOST_WORKAROUND(BOOST_MSVC, == 1200) // ETI workaround is_same<T2,int>::value || # endif ::boost::is_convertible<T1,T2>::value , ::boost::is_convertible<T2,T1>::value # if BOOST_WORKAROUND(BOOST_MSVC, == 1200) // ETI workaround || is_same<T1,int>::value # endif > outer;
I didn't notice there was another ETI workaround before.
A fix is checked in now. -- Dave Abrahams Boost Consulting http://www.boost-consulting.com
participants (2)
-
David Abrahams
-
Yitzhak Sapir