util/SerializeOrderSet.cpp / error: lvalue required as unary

Questions, problems and discussion about compiling FreeOrion.

Moderator: Oberlus

Post Reply
Message
Author
User avatar
Nagilum
Release Manager, Design
Posts: 212
Joined: Thu Dec 31, 2009 3:25 pm
Location: Germany

util/SerializeOrderSet.cpp / error: lvalue required as unary

#1 Post by Nagilum »

I' tried compiling FreeOrion (5424) on FreeBSD (x86_64).
I installed boost-1.50 and GIGI from the FO repo.
When compiling FO I get this error:

Code: Select all

[  1%] Building CXX object CMakeFiles/core_static.dir/util/SerializeOrderSet.cpp.o
/usr/local/include/boost/archive/shared_ptr_helper.hpp: In static member function 'static const boost::serialization::extended_type_info* boost::archive::detail::shared_ptr_helper::polymorphic<T>::get_object_identifier(T&) [with T = CombatObject]':
/usr/local/include/boost/archive/shared_ptr_helper.hpp:167:   instantiated from 'void boost::archive::detail::shared_ptr_helper::reset(boost::shared_ptr<X>&, T*) [with T = CombatObject]'
/usr/local/include/boost/serialization/shared_ptr.hpp:139:   instantiated from 'void boost::serialization::load(Archive&, boost::shared_ptr<U>&, unsigned int) [with Archive = boost::archive::binary_iarchive, T = CombatObject]'
/usr/local/include/boost/serialization/split_free.hpp:58:   instantiated from 'static void boost::serialization::free_loader<Archive, T>::invoke(Archive&, T&, unsigned int) [with Archive = boost::archive::binary_iarchive, T = boost::shared_ptr<CombatObject>]'
/usr/local/include/boost/serialization/split_free.hpp:74:   instantiated from 'void boost::serialization::split_free(Archive&, T&, unsigned int) [with Archive = boost::archive::binary_iarchive, T = boost::shared_ptr<CombatObject>]'
/usr/local/include/boost/serialization/shared_ptr.hpp:171:   instantiated from 'void boost::serialization::serialize(Archive&, boost::shared_ptr<U>&, unsigned int) [with Archive = boost::archive::binary_iarchive, T = CombatObject]'
/usr/local/include/boost/serialization/serialization.hpp:128:   instantiated from 'void boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::archive::binary_iarchive, T = boost::shared_ptr<CombatObject>]'
/usr/local/include/boost/archive/detail/iserializer.hpp:188:   instantiated from 'void boost::archive::detail::iserializer<Archive, T>::load_object_data(boost::archive::detail::basic_iarchive&, void*, unsigned int) const [with Archive = boost::archive::binary_iarchive, T = boost::shared_ptr<CombatObject>]'
/root/freeorion/util/SerializeOrderSet.cpp:212:   instantiated from here
/usr/local/include/boost/archive/shared_ptr_helper.hpp:144: error: lvalue required as unary '&' operand
/usr/local/include/boost/archive/shared_ptr_helper.hpp: In static member function 'static const boost::serialization::extended_type_info* boost::archive::detail::shared_ptr_helper::polymorphic<T>::get_object_identifier(T&) [with T = Order]':
/usr/local/include/boost/archive/shared_ptr_helper.hpp:167:   instantiated from 'void boost::archive::detail::shared_ptr_helper::reset(boost::shared_ptr<X>&, T*) [with T = Order]'
/usr/local/include/boost/serialization/shared_ptr.hpp:139:   instantiated from 'void boost::serialization::load(Archive&, boost::shared_ptr<U>&, unsigned int) [with Archive = boost::archive::binary_iarchive, T = Order]'
/usr/local/include/boost/serialization/split_free.hpp:58:   instantiated from 'static void boost::serialization::free_loader<Archive, T>::invoke(Archive&, T&, unsigned int) [with Archive = boost::archive::binary_iarchive, T = boost::shared_ptr<Order>]'
/usr/local/include/boost/serialization/split_free.hpp:74:   instantiated from 'void boost::serialization::split_free(Archive&, T&, unsigned int) [with Archive = boost::archive::binary_iarchive, T = boost::shared_ptr<Order>]'
/usr/local/include/boost/serialization/shared_ptr.hpp:171:   instantiated from 'void boost::serialization::serialize(Archive&, boost::shared_ptr<U>&, unsigned int) [with Archive = boost::archive::binary_iarchive, T = Order]'
/usr/local/include/boost/serialization/serialization.hpp:128:   instantiated from 'void boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::archive::binary_iarchive, T = boost::shared_ptr<Order>]'
/usr/local/include/boost/archive/detail/iserializer.hpp:188:   instantiated from 'void boost::archive::detail::iserializer<Archive, T>::load_object_data(boost::archive::detail::basic_iarchive&, void*, unsigned int) const [with Archive = boost::archive::binary_iarchive, T = boost::shared_ptr<Order>]'
/root/freeorion/util/SerializeOrderSet.cpp:214:   instantiated from here
/usr/local/include/boost/archive/shared_ptr_helper.hpp:144: error: lvalue required as unary '&' operand
*** [CMakeFiles/core_static.dir/util/SerializeOrderSet.cpp.o] Error code 1

Stop in /root/freeorion.
*** [CMakeFiles/core_static.dir/all] Error code 1

Stop in /root/freeorion.
*** [all] Error code 1

Stop in /root/freeorion.
The files util/SerializeOrderSet.cpp & /usr/local/include/boost/archive/shared_ptr_helper.hpp are identical to the Linux version - which compiles fine.
gcc is gcc4.7.3.
Maybe I'll set up a i686 FreeBSD VM just to see if it makes a difference.

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13587
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: util/SerializeOrderSet.cpp / error: lvalue required as u

#2 Post by Geoff the Medio »

A quick googling indicates this is not unique to FreeOrion: https://bugs.launchpad.net/geneva/+bug/ ... comments/0
Maybe try boost 1.51 or different GCC versions?

User avatar
Nagilum
Release Manager, Design
Posts: 212
Joined: Thu Dec 31, 2009 3:25 pm
Location: Germany

Re: util/SerializeOrderSet.cpp / error: lvalue required as u

#3 Post by Nagilum »

Confirmed, with boost1.51 the issue goes away. :)

Post Reply