
"John Maddock" <john@johnmaddock.co.uk> writes:
I am getting the error from Intel C++ at the point of declaration of the compressed_pair specialization.
I've experimented some more, and found one bug in the current implementation:
If one of the templates arguments is both const and an empty class, then compressed_pair attempts to inherit from the const-class type which generates an error for Intel C++, but not strangely for VC++.
I've attached an updated version with some trivial (tested on all the compilers I have) fixes, does this fix your problem?
Yes, that does it, thanks. I'll check it in on your behalf.
BTW, at the risk of stating the obvious, compiler error messages really help when reporting issues (JM runs and ducks for cover!).
Okay, here's your next challenge. This is with the very latest Comeau alpha release compiler. "c:\boost/boost/type_traits/is_member_function_pointer.hpp", line 67: warning #1290-D: non-POD class type passed through ellipsis BOOST_STATIC_CONSTANT( ^ detected during: instantiation of class "boost::detail::is_mem_fun_pointer_select<false>::result_ <T> [with T=boost::details::compressed_pair_imp<boost::sequence::en d_cursor<char [11]>::type, boost::sequence::accessor_::implementation<char [11], void>::type, 1>::second_type]" at line 76 instantiation of class "boost::detail::is_member_function_pointer_impl<T> [with T=boost::details::compressed_pair_imp<boost::sequence::en d_cursor<char [11]>::type, boost::sequence::accessor_::implementation<char [11], void>::type, 1>::second_type]" at line 118 instantiation of class "boost::is_member_function_pointer<T> [with T=boost::details::compressed_pair_imp<boost::sequence::en d_cursor<char [11]>::type, boost::sequence::accessor_::implementation<char [11], void>::type, 1>::second_type]" at line 48 of "c:\boost/boost/type_traits/is_member_pointer.hpp" instantiation of class "boost::is_member_pointer<T> [with T=boost::details::compressed_pair_imp<boost::sequence::en d_cursor<char [11]>::type, boost::sequence::accessor_::implementation<char [11], void>::type, 1>::second_type]" at line 68 of "c:\boost/boost/type_traits/is_pointer.hpp" instantiation of class "boost::detail::is_pointer_impl<T> [with T=boost::details::compressed_pair_imp<boost::sequence::en d_cursor<char [11]>::type, boost::sequence::accessor_::implementation<char [11], void>::type, 1>::second_type]" at line 80 of "c:\boost/boost/type_traits/is_pointer.hpp" [ 6 instantiation contexts not shown ] instantiation of class "boost::detail::is_empty_impl<T> [with T=boost::compressed_pair<boost::sequence::end_cursor<char [11]>::type, boost::sequence::accessor_::implementation<char [11], void>::type>]" at line 200 of "c:\boost/boost/type_traits/is_empty.hpp" instantiation of class "boost::is_empty<T> [with T=boost::compressed_pair<boost::sequence::end_cursor<char [11]>::type, boost::sequence::accessor_::implementation<char [11], void>::type>]" at line 340 of "c:\boost/boost/detail/compressed_pair.hpp" instantiation of class "boost::compressed_pair<T1, T2> [with T1=boost::sequence::advanced<boost::sequence::begin_curso r_::implementation<char [11], void>::type, boost::sequence::difference<boost::sequence::end_cursor<c onst char [6]>::type, boost::sequence::begin_cursor_::implementation<const char [6], void>::type>::type>::type, T2=boost::compressed_pair<boost::sequence::end_cursor<cha r [11]>::type, boost::sequence::accessor_::implementation<char [11], void>::type>]" at line 19 of "..\..\..\../boost/sequence/range.hpp" instantiation of class "boost::sequence::range_::range<Elements, Begin, End> [with Elements=boost::sequence::accessor_::implementation<char [11], void>::type, Begin=boost::sequence::advanced<boost::sequence::begin_cu rsor_::implementation<char [11], void>::type, boost::sequence::difference<boost::sequence::end_cursor<c onst char [6]>::type, boost::sequence::begin_cursor_::implementation<const char [6], void>::type>::type>::type, End=boost::sequence::end_cursor<char [11]>::type]" at line 23 of "..\..\..\..\boost/sequence/algorithm/copy.hpp" instantiation of "boost::sequence::algorithm::dispatch<boost::sequence::al gorithm::copy_ (boost::add_const<Range1>::type &, Range2 &)>::type boost::sequence::algorithm::copy_::operator()(const Range1 &, Range2 &) const [with Range1=char [6], Range2=char [11]]" at line 24 of "copy.cpp" -- Dave Abrahams Boost Consulting www.boost-consulting.com