hi,

I have a problem compiling simple boost mpi programs with gcc4.6 on osx. The broadcast_test.cpp from libs/mpi/test compiles just fine with the -std=gnu++98, but when I use -std=gnu++0x I get a compilation error which seems to implicate boost::serialization. The code compiles just fine with gcc-4.4 and gcc-4.7 with the -std=gnu++0x flags. There is no c++0x specific code in the test file itself.

Any ideas what the problem is with gcc-4.6 and -std=gnu++0x?

$ OMPI_CXX=g++-mp-4.6 openmpic++  -std=c++0x -m64 -o broadcast_test broadcast_test.cpp -lboost_mpi-mt -lboost_serialization-mt
In file included from /opt/local/include/boost/mpi/collectives.hpp:21:0,
                 from /opt/local/include/boost/mpi/collectives_fwd.hpp:19,
                 from /opt/local/include/boost/mpi/collectives/broadcast.hpp:11,
                 from broadcast_test.cpp:8:
/opt/local/include/boost/mpi/communicator.hpp:1633:58: error: specialization of 'boost::mpi::status boost::mpi::communicator::recv(int, int, T&) const [with T = boost::mpi::packed_iarchive]' after instantiation
/opt/local/include/boost/mpi/communicator.hpp:1668:65: error: specialization of 'boost::mpi::request boost::mpi::communicator::isend(int, int, const T&) const [with T = boost::mpi::packed_oarchive]' after instantiation
In file included from /opt/local/include/gcc46/c++/vector:64:0,
                 from /opt/local/include/gcc46/c++/bits/random.h:34,
                 from /opt/local/include/gcc46/c++/random:50,
                 from /opt/local/include/gcc46/c++/bits/stl_algo.h:67,
                 from /opt/local/include/gcc46/c++/algorithm:63,
                 from /opt/local/include/boost/optional/optional.hpp:19,
                 from /opt/local/include/boost/optional.hpp:15,
                 from /opt/local/include/boost/mpi/communicator.hpp:18,
                 from /opt/local/include/boost/mpi/collectives.hpp:21,
                 from /opt/local/include/boost/mpi/collectives_fwd.hpp:19,
                 from /opt/local/include/boost/mpi/collectives/broadcast.hpp:11,
                 from broadcast_test.cpp:8:
/opt/local/include/gcc46/c++/bits/stl_uninitialized.h: In function 'void std::__uninitialized_default_n_a(_ForwardIterator, _Size, _Allocator&) [with _ForwardIterator = char*, _Size = long unsigned int, _Allocator = boost::mpi::allocator<char>]':
/opt/local/include/gcc46/c++/bits/vector.tcc:474:8:   instantiated from 'void std::vector<_Tp, _Alloc>::_M_default_append(std::vector<_Tp, _Alloc>::size_type) [with _Tp = char, _Alloc = boost::mpi::allocator<char>, std::vector<_Tp, _Alloc>::size_type = long unsigned int]'
/opt/local/include/gcc46/c++/bits/stl_vector.h:592:4:   instantiated from 'void std::vector<_Tp, _Alloc>::resize(std::vector<_Tp, _Alloc>::size_type) [with _Tp = char, _Alloc = boost::mpi::allocator<char>, std::vector<_Tp, _Alloc>::size_type = long unsigned int]'
/opt/local/include/boost/mpi/detail/packed_oprimitive.hpp:96:46:   instantiated from here
/opt/local/include/gcc46/c++/bits/stl_uninitialized.h:576:6: error: no matching function for call to 'boost::mpi::allocator<char>::construct(char*)'
/opt/local/include/gcc46/c++/bits/stl_uninitialized.h:576:6: note: candidate is:
/opt/local/include/boost/mpi/allocator.hpp:168:8: note: void boost::mpi::allocator<T>::construct(boost::mpi::allocator<T>::pointer, const T&) [with T = char, boost::mpi::allocator<T>::pointer = char*]
/opt/local/include/boost/mpi/allocator.hpp:168:8: note:   candidate expects 2 arguments, 1 provided
In file included from /opt/local/include/boost/serialization/extended_type_info_typeid.hpp:37:0,
                 from /opt/local/include/boost/archive/detail/oserializer.hpp:38,
                 from /opt/local/include/boost/mpi/detail/mpi_datatype_oarchive.hpp:14,
                 from /opt/local/include/boost/mpi/detail/mpi_datatype_cache.hpp:13,
                 from /opt/local/include/boost/mpi/datatype.hpp:27,
                 from /opt/local/include/boost/mpi/communicator.hpp:20,
                 from /opt/local/include/boost/mpi/collectives.hpp:21,
                 from /opt/local/include/boost/mpi/collectives_fwd.hpp:19,
                 from /opt/local/include/boost/mpi/collectives/broadcast.hpp:11,
                 from broadcast_test.cpp:8:
/opt/local/include/boost/serialization/access.hpp: In static member function 'static void boost::serialization::access::serialize(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_oarchive, T = boost::mpi::packed_oarchive]':
/opt/local/include/boost/serialization/serialization.hpp:69:5:   instantiated from 'void boost::serialization::serialize(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_oarchive, T = boost::mpi::packed_oarchive]'
/opt/local/include/boost/serialization/serialization.hpp:128:9:   instantiated from 'void boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_oarchive, T = boost::mpi::packed_oarchive]'
/opt/local/include/boost/archive/detail/oserializer.hpp:148:5:   instantiated from 'void boost::archive::detail::oserializer<Archive, T>::save_object_data(boost::archive::detail::basic_oarchive&, const void*) const [with Archive = boost::mpi::packed_oarchive, T = boost::mpi::packed_oarchive]'
broadcast_test.cpp:153:1:   instantiated from here
/opt/local/include/boost/serialization/access.hpp:118:9: error: 'class boost::mpi::packed_oarchive' has no member named 'serialize'
/opt/local/include/boost/serialization/access.hpp: In static member function 'static void boost::serialization::access::serialize(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_iarchive, T = boost::mpi::packed_iarchive]':
/opt/local/include/boost/serialization/serialization.hpp:69:5:   instantiated from 'void boost::serialization::serialize(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_iarchive, T = boost::mpi::packed_iarchive]'
/opt/local/include/boost/serialization/serialization.hpp:128:9:   instantiated from 'void boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::mpi::packed_iarchive, T = boost::mpi::packed_iarchive]'
/opt/local/include/boost/archive/detail/iserializer.hpp:188:5:   instantiated from 'void boost::archive::detail::iserializer<Archive, T>::load_object_data(boost::archive::detail::basic_iarchive&, void*, unsigned int) const [with Archive = boost::mpi::packed_iarchive, T = boost::mpi::packed_iarchive]'
broadcast_test.cpp:153:1:   instantiated from here
/opt/local/include/boost/serialization/access.hpp:118:9: error: 'class boost::mpi::packed_iarchive' has no member named 'serialize'