On 07/29/2014 08:40 PM, Marshall Clow wrote:
On Jul 29, 2014, at 10:06 AM, Marshall Clow <mclow.lists@gmail.com> wrote:
Release candidate files for 1.65.0 are available at http://boost.cowic.de/rc/ Ok, ok - fine. 1.56.0
The following doesn't compile with gcc 4.3.2 on Linux x86: #include <iostream> #include <boost/algorithm/string.hpp> #include <boost/asio/ip/udp.hpp> int main( void ) { std::cout << "Oh dear..." << std::endl; return 0; } Note this is just a minimal example, the error occurred while trying to compile a real world application where the boost header you see here get included in different modules. When I change the order of the header (include udp.hpp before string.hpp) the code compiles just fine. The error is: --------------------- center@debian-builder-vm:~/perforce/depot/.../Software/main/lib$ g++ -I./boost-1_56_0_b1 -L./boost-1_56_0_b1/stage/lib test.cpp -lboost_system In file included from ./boost-1_56_0_b1/boost/asio/detail/reactive_socket_service.hpp:27, from ./boost-1_56_0_b1/boost/asio/datagram_socket_service.hpp:30, from ./boost-1_56_0_b1/boost/asio/basic_datagram_socket.hpp:21, from ./boost-1_56_0_b1/boost/asio/ip/udp.hpp:19, from test.cpp:3: ./boost-1_56_0_b1/boost/type_traits/is_convertible.hpp: In instantiation of ‘boost::is_convertible<const boost::asio::detail::buffer_sequence_adapter_base::<anonymous enum>&, const boost::iterator_range_detail::iterator_range_tag&>’: ./boost-1_56_0_b1/boost/mpl/aux_/nested_type_wknd.hpp:28: instantiated from ‘boost::mpl::aux::nested_type_wknd<boost::is_convertible<const boost::asio::detail::buffer_sequence_adapter_base::<anonymous enum>&, const boost::iterator_range_detail::iterator_range_tag&> >’ ./boost-1_56_0_b1/boost/mpl/aux_/preprocessed/gcc/or.hpp:19: instantiated from ‘boost::mpl::aux::or_impl<false, boost::is_convertible<const boost::asio::detail::buffer_sequence_adapter_base::<anonymous enum>&, const boost::iterator_range_detail::iterator_range_tag&>, mpl_::bool_<false>, mpl_::bool_<false>, mpl_::bool_<false> >’ ./boost-1_56_0_b1/boost/mpl/aux_/preprocessed/gcc/or.hpp:55: instantiated from ‘boost::mpl::or_<boost::is_convertible<const size_t&, const boost::iterator_range_detail::iterator_range_tag&>, boost::is_convertible<const boost::asio::detail::buffer_sequence_adapter_base::<anonymous enum>&, const boost::iterator_range_detail::iterator_range_tag&>, mpl_::bool_<false>, mpl_::bool_<false>, mpl_::bool_<false> >’ ./boost-1_56_0_b1/boost/core/enable_if.hpp:36: instantiated from ‘boost::enable_if<boost::mpl::or_<boost::is_convertible<const size_t&, const boost::iterator_range_detail::iterator_range_tag&>, boost::is_convertible<const boost::asio::detail::buffer_sequence_adapter_base::<anonymous enum>&, const boost::iterator_range_detail::iterator_range_tag&>, mpl_::bool_<false>, mpl_::bool_<false>, mpl_::bool_<false> >, bool>’ ./boost-1_56_0_b1/boost/asio/detail/buffer_sequence_adapter.hpp:109: instantiated from here ./boost-1_56_0_b1/boost/type_traits/is_convertible.hpp:482: error: ‘const boost::asio::detail::buffer_sequence_adapter_base::<anonymous enum>&’ is/uses anonymous type ./boost-1_56_0_b1/boost/type_traits/is_convertible.hpp:482: error: trying to instantiate ‘template<class From, class To> struct boost::detail::is_convertible_impl_dispatch’ ./boost-1_56_0_b1/boost/mpl/aux_/nested_type_wknd.hpp: In instantiation of ‘boost::mpl::aux::nested_type_wknd<boost::is_convertible<const boost::asio::detail::buffer_sequence_adapter_base::<anonymous enum>&, const boost::iterator_range_detail::iterator_range_tag&> >’: ./boost-1_56_0_b1/boost/mpl/aux_/preprocessed/gcc/or.hpp:19: instantiated from ‘boost::mpl::aux::or_impl<false, boost::is_convertible<const boost::asio::detail::buffer_sequence_adapter_base::<anonymous enum>&, const boost::iterator_range_detail::iterator_range_tag&>, mpl_::bool_<false>, mpl_::bool_<false>, mpl_::bool_<false> >’ ./boost-1_56_0_b1/boost/mpl/aux_/preprocessed/gcc/or.hpp:55: instantiated from ‘boost::mpl::or_<boost::is_convertible<const size_t&, const boost::iterator_range_detail::iterator_range_tag&>, boost::is_convertible<const boost::asio::detail::buffer_sequence_adapter_base::<anonymous enum>&, const boost::iterator_range_detail::iterator_range_tag&>, mpl_::bool_<false>, mpl_::bool_<false>, mpl_::bool_<false> >’ ./boost-1_56_0_b1/boost/core/enable_if.hpp:36: instantiated from ‘boost::enable_if<boost::mpl::or_<boost::is_convertible<const size_t&, const boost::iterator_range_detail::iterator_range_tag&>, boost::is_convertible<const boost::asio::detail::buffer_sequence_adapter_base::<anonymous enum>&, const boost::iterator_range_detail::iterator_range_tag&>, mpl_::bool_<false>, mpl_::bool_<false>, mpl_::bool_<false> >, bool>’ ./boost-1_56_0_b1/boost/asio/detail/buffer_sequence_adapter.hpp:109: instantiated from here ./boost-1_56_0_b1/boost/mpl/aux_/nested_type_wknd.hpp:28: error: no type named ‘type’ in ‘struct boost::is_convertible<const boost::asio::detail::buffer_sequence_adapter_base::<anonymous enum>&, const boost::iterator_range_detail::iterator_range_tag&>’ ./boost-1_56_0_b1/boost/mpl/aux_/preprocessed/gcc/or.hpp: In instantiation of ‘boost::mpl::aux::or_impl<false, boost::is_convertible<const boost::asio::detail::buffer_sequence_adapter_base::<anonymous enum>&, const boost::iterator_range_detail::iterator_range_tag&>, mpl_::bool_<false>, mpl_::bool_<false>, mpl_::bool_<false> >’: ./boost-1_56_0_b1/boost/mpl/aux_/preprocessed/gcc/or.hpp:55: instantiated from ‘boost::mpl::or_<boost::is_convertible<const size_t&, const boost::iterator_range_detail::iterator_range_tag&>, boost::is_convertible<const boost::asio::detail::buffer_sequence_adapter_base::<anonymous enum>&, const boost::iterator_range_detail::iterator_range_tag&>, mpl_::bool_<false>, mpl_::bool_<false>, mpl_::bool_<false> >’ ./boost-1_56_0_b1/boost/core/enable_if.hpp:36: instantiated from ‘boost::enable_if<boost::mpl::or_<boost::is_convertible<const size_t&, const boost::iterator_range_detail::iterator_range_tag&>, boost::is_convertible<const boost::asio::detail::buffer_sequence_adapter_base::<anonymous enum>&, const boost::iterator_range_detail::iterator_range_tag&>, mpl_::bool_<false>, mpl_::bool_<false>, mpl_::bool_<false> >, bool>’ ./boost-1_56_0_b1/boost/asio/detail/buffer_sequence_adapter.hpp:109: instantiated from here ./boost-1_56_0_b1/boost/mpl/aux_/preprocessed/gcc/or.hpp:19: error: ‘value’ is not a member of ‘boost::mpl::aux::nested_type_wknd<boost::is_convertible<const boost::asio::detail::buffer_sequence_adapter_base::<anonymous enum>&, const boost::iterator_range_detail::iterator_range_tag&> >’ ./boost-1_56_0_b1/boost/core/enable_if.hpp: In instantiation of ‘boost::enable_if<boost::mpl::or_<boost::is_convertible<const size_t&, const boost::iterator_range_detail::iterator_range_tag&>, boost::is_convertible<const boost::asio::detail::buffer_sequence_adapter_base::<anonymous enum>&, const boost::iterator_range_detail::iterator_range_tag&>, mpl_::bool_<false>, mpl_::bool_<false>, mpl_::bool_<false> >, bool>’: ./boost-1_56_0_b1/boost/asio/detail/buffer_sequence_adapter.hpp:109: instantiated from here ./boost-1_56_0_b1/boost/core/enable_if.hpp:36: error: ‘value’ is not a member of ‘boost::mpl::or_<boost::is_convertible<const size_t&, const boost::iterator_range_detail::iterator_range_tag&>, boost::is_convertible<const boost::asio::detail::buffer_sequence_adapter_base::<anonymous enum>&, const boost::iterator_range_detail::iterator_range_tag&>, mpl_::bool_<false>, mpl_::bool_<false>, mpl_::bool_<false> >’ --------------------- Regards, Andreas