#12126 closed Bugs (fixed)
Some serialization headers fail to compile independently
Reported by: | Owned by: | Robert Ramey | |
---|---|---|---|
Milestone: | To Be Determined | Component: | serialization |
Version: | Boost 1.61.0 | Severity: | Problem |
Keywords: | header, compile, serialization, policy | Cc: |
Description
The Boost header policy requires:
Make sure that a translation unit consisting of just the contents of the header file will compile successfully.
...but several of the serialization headers to not meet this standard, eg:
> clang++ -isystem serialization/include -isystem /opt/include -x c++ -c -o /tmp/a.o serialization/include/boost/serialization/set.hpp In file included from serialization/include/boost/serialization/set.hpp:26: serialization/include/boost/serialization/detail/stack_constructor.hpp:50:31: error: no member named 'load_construct_data_adl' in namespace 'boost::serialization' boost::serialization::load_construct_data_adl( ~~~~~~~~~~~~~~~~~~~~~~^ 1 error generated.
> g++ -isystem serialization/include -isystem /opt/include -x c++ -c -o /tmp/a.o serialization/include/boost/serialization/set.hpp In file included from serialization/include/boost/serialization/set.hpp:26:0: serialization/include/boost/serialization/detail/stack_constructor.hpp: In constructor ‘boost::serialization::detail::stack_construct<Archive, T>::stack_construct(Archive&, unsigned int)’: serialization/include/boost/serialization/detail/stack_constructor.hpp:50:9: error: ‘load_construct_data_adl’ is not a member of ‘boost::serialization
Thanks very much for all work on this library.
Change History (6)
comment:1 by , 7 years ago
comment:2 by , 7 years ago
Apologies for the dump, but it seems the best way to answer...
From:
find serialization/include/boost/serialization -iname '*.hpp' | sort | grep detail -v | grep impl -v | xargs -I VAR /bin/tcsh -c "echo VAR; clang++ -isystem serialization/include/ -isystem /tmp/boost -x c++ -c -o /tmp/a.o VAR"
I get:
serialization/include/boost/serialization/access.hpp serialization/include/boost/serialization/archive_input_unordered_map.hpp serialization/include/boost/serialization/archive_input_unordered_map.hpp:39:17: error: no member named 'stack_construct' in namespace 'boost::serialization::detail' detail::stack_construct<Archive, type> t(ar, v); ~~~~~~~~^ serialization/include/boost/serialization/archive_input_unordered_map.hpp:39:33: error: 'Archive' does not refer to a value detail::stack_construct<Archive, type> t(ar, v); ^ serialization/include/boost/serialization/archive_input_unordered_map.hpp:30:16: note: declared here template<class Archive, class Container> ^ serialization/include/boost/serialization/archive_input_unordered_map.hpp:40:54: error: use of undeclared identifier 't' ar >> boost::serialization::make_nvp("item", t.reference()); ^ serialization/include/boost/serialization/archive_input_unordered_map.hpp:43:26: error: use of undeclared identifier 't' s.insert(t.reference()); ^ serialization/include/boost/serialization/archive_input_unordered_map.hpp:53:19: error: use of undeclared identifier 't' & t.reference().second ^ serialization/include/boost/serialization/archive_input_unordered_map.hpp:69:17: error: no member named 'stack_construct' in namespace 'boost::serialization::detail' detail::stack_construct<Archive, type> t(ar, v); ~~~~~~~~^ serialization/include/boost/serialization/archive_input_unordered_map.hpp:69:33: error: 'Archive' does not refer to a value detail::stack_construct<Archive, type> t(ar, v); ^ serialization/include/boost/serialization/archive_input_unordered_map.hpp:60:16: note: declared here template<class Archive, class Container> ^ serialization/include/boost/serialization/archive_input_unordered_map.hpp:70:54: error: use of undeclared identifier 't' ar >> boost::serialization::make_nvp("item", t.reference()); ^ serialization/include/boost/serialization/archive_input_unordered_map.hpp:73:26: error: use of undeclared identifier 't' s.insert(t.reference()); ^ serialization/include/boost/serialization/archive_input_unordered_map.hpp:82:15: error: use of undeclared identifier 't' & t.reference() ^ 10 errors generated. serialization/include/boost/serialization/archive_input_unordered_set.hpp serialization/include/boost/serialization/archive_input_unordered_set.hpp:35:9: error: use of undeclared identifier 'detail' detail::stack_construct<Archive, type> t(ar, v); ^ serialization/include/boost/serialization/archive_input_unordered_set.hpp:35:33: error: 'Archive' does not refer to a value detail::stack_construct<Archive, type> t(ar, v); ^ serialization/include/boost/serialization/archive_input_unordered_set.hpp:26:16: note: declared here template<class Archive, class Container> ^ serialization/include/boost/serialization/archive_input_unordered_set.hpp:37:37: error: no member named 'make_nvp' in namespace 'boost::serialization' ar >> boost::serialization::make_nvp("item", t.reference()); ~~~~~~~~~~~~~~~~~~~~~~^ serialization/include/boost/serialization/archive_input_unordered_set.hpp:37:54: error: use of undeclared identifier 't' ar >> boost::serialization::make_nvp("item", t.reference()); ^ serialization/include/boost/serialization/archive_input_unordered_set.hpp:38:9: error: use of undeclared identifier 'std'; did you mean 'stl'? std::pair<typename Container::const_iterator, bool> result = ^~~ stl serialization/include/boost/serialization/archive_input_unordered_set.hpp:23:11: note: 'stl' declared here namespace stl { ^ serialization/include/boost/serialization/archive_input_unordered_set.hpp:38:14: error: no member named 'pair' in namespace 'boost::serialization::stl' std::pair<typename Container::const_iterator, bool> result = ~~~~~^ serialization/include/boost/serialization/archive_input_unordered_set.hpp:38:53: error: expected '(' for function-style cast or type construction std::pair<typename Container::const_iterator, bool> result = ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ serialization/include/boost/serialization/archive_input_unordered_set.hpp:44:12: error: use of undeclared identifier 'result' if(result.second) ^ serialization/include/boost/serialization/archive_input_unordered_set.hpp:45:42: error: use of undeclared identifier 'result' ar.reset_object_address(& (* result.first), & t.reference()); ^ serialization/include/boost/serialization/archive_input_unordered_set.hpp:45:59: error: use of undeclared identifier 't' ar.reset_object_address(& (* result.first), & t.reference()); ^ serialization/include/boost/serialization/archive_input_unordered_set.hpp:59:9: error: use of undeclared identifier 'detail' detail::stack_construct<Archive, type> t(ar, v); ^ serialization/include/boost/serialization/archive_input_unordered_set.hpp:59:33: error: 'Archive' does not refer to a value detail::stack_construct<Archive, type> t(ar, v); ^ serialization/include/boost/serialization/archive_input_unordered_set.hpp:50:16: note: declared here template<class Archive, class Container> ^ serialization/include/boost/serialization/archive_input_unordered_set.hpp:60:37: error: no member named 'make_nvp' in namespace 'boost::serialization' ar >> boost::serialization::make_nvp("item", t.reference()); ~~~~~~~~~~~~~~~~~~~~~~^ serialization/include/boost/serialization/archive_input_unordered_set.hpp:60:54: error: use of undeclared identifier 't' ar >> boost::serialization::make_nvp("item", t.reference()); ^ serialization/include/boost/serialization/archive_input_unordered_set.hpp:65:27: error: use of undeclared identifier 't' s.emplace(t.reference()); ^ serialization/include/boost/serialization/archive_input_unordered_set.hpp:67:49: error: use of undeclared identifier 't' ar.reset_object_address(& (* result), & t.reference()); ^ 16 errors generated. serialization/include/boost/serialization/array.hpp serialization/include/boost/serialization/assume_abstract.hpp serialization/include/boost/serialization/base_object.hpp serialization/include/boost/serialization/binary_object.hpp serialization/include/boost/serialization/bitset.hpp serialization/include/boost/serialization/boost_unordered_map.hpp serialization/include/boost/serialization/boost_unordered_set.hpp serialization/include/boost/serialization/collection_size_type.hpp serialization/include/boost/serialization/collections_load_imp.hpp In file included from serialization/include/boost/serialization/collections_load_imp.hpp:38: serialization/include/boost/serialization/detail/stack_constructor.hpp:50:31: error: no member named 'load_construct_data_adl' in namespace 'boost::serialization' boost::serialization::load_construct_data_adl( ~~~~~~~~~~~~~~~~~~~~~~^ 1 error generated. serialization/include/boost/serialization/collections_save_imp.hpp serialization/include/boost/serialization/collection_traits.hpp serialization/include/boost/serialization/complex.hpp serialization/include/boost/serialization/config.hpp serialization/include/boost/serialization/deque.hpp serialization/include/boost/serialization/ephemeral.hpp serialization/include/boost/serialization/ephemeral.hpp:5:9: warning: #pragma once in main file #pragma once ^ 1 warning generated. serialization/include/boost/serialization/export.hpp serialization/include/boost/serialization/extended_type_info.hpp serialization/include/boost/serialization/extended_type_info_no_rtti.hpp serialization/include/boost/serialization/extended_type_info_typeid.hpp serialization/include/boost/serialization/factory.hpp serialization/include/boost/serialization/factory.hpp:37:5: error: use of undeclared identifier 'BOOST_ASSERT' BOOST_ASSERT(false); ^ 1 error generated. serialization/include/boost/serialization/force_include.hpp serialization/include/boost/serialization/forward_list.hpp In file included from serialization/include/boost/serialization/forward_list.hpp:19: In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/5.2.1/../../../../include/c++/5.2.1/forward_list:35: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.2.1/../../../../include/c++/5.2.1/bits/c++0x_warning.h:32:2: error: This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options. #error This file requires compiler and library support for the \ ^ serialization/include/boost/serialization/forward_list.hpp:24:2: error: "not supported for versions earlier than c++11 #error "not supported for versions earlier than c++11 ^ serialization/include/boost/serialization/forward_list.hpp:43:16: error: no type named 'forward_list' in namespace 'std' const std::forward_list<U, Allocator> &t, ~~~~~^ serialization/include/boost/serialization/forward_list.hpp:43:28: error: expected ')' const std::forward_list<U, Allocator> &t, ^ serialization/include/boost/serialization/forward_list.hpp:41:17: note: to match this '(' inline void save( ^ serialization/include/boost/serialization/forward_list.hpp:46:52: error: use of undeclared identifier 't' const collection_size_type count(std::distance(t.cbegin(), t.cend())); ^ serialization/include/boost/serialization/forward_list.hpp:46:64: error: use of undeclared identifier 't' const collection_size_type count(std::distance(t.cbegin(), t.cend())); ^ serialization/include/boost/serialization/forward_list.hpp:49:14: error: no member named 'forward_list' in namespace 'std' std::forward_list<U, Allocator> ~~~~~^ serialization/include/boost/serialization/forward_list.hpp:49:27: error: 'U' does not refer to a value std::forward_list<U, Allocator> ^ serialization/include/boost/serialization/forward_list.hpp:40:31: note: declared here template<class Archive, class U, class Allocator> ^ serialization/include/boost/serialization/forward_list.hpp:50:5: error: expected unqualified-id >(ar, t, count); ^ serialization/include/boost/serialization/forward_list.hpp:62:23: error: no type named 'forward_list' in namespace 'std' typename std::forward_list<T, Allocator>::value_type ~~~~~~~~~~~~~~^~~~~~~~~~~~ serialization/include/boost/serialization/forward_list.hpp:62:49: error: no type named 'value_type' in the global namespace; did you mean 'false_type'? typename std::forward_list<T, Allocator>::value_type ^~~~~~~~~~~~ false_type /tmp/boost/boost/type_traits/integral_constant.hpp:102:43: note: 'false_type' declared here typedef integral_constant<bool, false> false_type; ^ serialization/include/boost/serialization/forward_list.hpp:63:6: error: expected unqualified-id >, ^ serialization/include/boost/serialization/forward_list.hpp:92:10: error: no type named 'forward_list' in namespace 'std' std::forward_list<U, Allocator> &t, ~~~~~^ serialization/include/boost/serialization/forward_list.hpp:92:22: error: expected ')' std::forward_list<U, Allocator> &t, ^ serialization/include/boost/serialization/forward_list.hpp:90:17: note: to match this '(' inline void load( ^ serialization/include/boost/serialization/forward_list.hpp:105:35: error: use of undeclared identifier 't' stl::collection_load_impl(ar, t, count, item_version); ^ serialization/include/boost/serialization/forward_list.hpp:113:10: error: no type named 'forward_list' in namespace 'std' std::forward_list<U, Allocator> &t, ~~~~~^ serialization/include/boost/serialization/forward_list.hpp:113:22: error: expected ')' std::forward_list<U, Allocator> &t, ^ serialization/include/boost/serialization/forward_list.hpp:111:22: note: to match this '(' inline void serialize( ^ serialization/include/boost/serialization/forward_list.hpp:116:42: error: use of undeclared identifier 't' boost::serialization::split_free(ar, t, file_version); ^ serialization/include/boost/serialization/forward_list.hpp:116:45: error: use of undeclared identifier 'file_version' boost::serialization::split_free(ar, t, file_version); ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. serialization/include/boost/serialization/hash_collections_load_imp.hpp serialization/include/boost/serialization/hash_collections_save_imp.hpp serialization/include/boost/serialization/hash_map.hpp In file included from serialization/include/boost/serialization/hash_map.hpp:22: In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/5.2.1/../../../../include/c++/5.2.1/ext/hash_map:60: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.2.1/../../../../include/c++/5.2.1/backward/backward_warning.h:32:2: warning: This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date. Please use a non-deprecated interface with equivalent functionality instead. For a listing of replacement headers and interfaces, consult the file backward_warning.h. To disable this warning use -Wno-deprecated. [-W#warnings] #warning \ ^ serialization/include/boost/serialization/hash_map.hpp:44:17: error: no member named 'stack_construct' in namespace 'boost::serialization::detail' detail::stack_construct<Archive, type> t(ar, v); ~~~~~~~~^ serialization/include/boost/serialization/hash_map.hpp:44:33: error: 'Archive' does not refer to a value detail::stack_construct<Archive, type> t(ar, v); ^ serialization/include/boost/serialization/hash_map.hpp:35:16: note: declared here template<class Archive, class Container> ^ serialization/include/boost/serialization/hash_map.hpp:46:54: error: use of undeclared identifier 't' ar >> boost::serialization::make_nvp("item", t.reference()); ^ serialization/include/boost/serialization/hash_map.hpp:48:22: error: use of undeclared identifier 't' s.insert(t.reference()); ^ serialization/include/boost/serialization/hash_map.hpp:55:19: error: use of undeclared identifier 't' & t.reference().second ^ serialization/include/boost/serialization/hash_map.hpp:71:17: error: no member named 'stack_construct' in namespace 'boost::serialization::detail' detail::stack_construct<Archive, type> t(ar, v); ~~~~~~~~^ serialization/include/boost/serialization/hash_map.hpp:71:33: error: 'Archive' does not refer to a value detail::stack_construct<Archive, type> t(ar, v); ^ serialization/include/boost/serialization/hash_map.hpp:62:16: note: declared here template<class Archive, class Container> ^ serialization/include/boost/serialization/hash_map.hpp:73:54: error: use of undeclared identifier 't' ar >> boost::serialization::make_nvp("item", t.reference()); ^ serialization/include/boost/serialization/hash_map.hpp:75:24: error: use of undeclared identifier 't' = s.insert(t.reference()); ^ serialization/include/boost/serialization/hash_map.hpp:81:15: error: use of undeclared identifier 't' & t.reference() ^ 1 warning and 10 errors generated. serialization/include/boost/serialization/hash_set.hpp In file included from serialization/include/boost/serialization/hash_set.hpp:21: In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/5.2.1/../../../../include/c++/5.2.1/ext/hash_set:60: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.2.1/../../../../include/c++/5.2.1/backward/backward_warning.h:32:2: warning: This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date. Please use a non-deprecated interface with equivalent functionality instead. For a listing of replacement headers and interfaces, consult the file backward_warning.h. To disable this warning use -Wno-deprecated. [-W#warnings] #warning \ ^ serialization/include/boost/serialization/hash_set.hpp:42:17: error: no member named 'stack_construct' in namespace 'boost::serialization::detail' detail::stack_construct<Archive, type> t(ar, v); ~~~~~~~~^ serialization/include/boost/serialization/hash_set.hpp:42:33: error: 'Archive' does not refer to a value detail::stack_construct<Archive, type> t(ar, v); ^ serialization/include/boost/serialization/hash_set.hpp:33:16: note: declared here template<class Archive, class Container> ^ serialization/include/boost/serialization/hash_set.hpp:44:54: error: use of undeclared identifier 't' ar >> boost::serialization::make_nvp("item", t.reference()); ^ serialization/include/boost/serialization/hash_set.hpp:46:22: error: use of undeclared identifier 't' s.insert(t.reference()); ^ serialization/include/boost/serialization/hash_set.hpp:48:59: error: use of undeclared identifier 't' ar.reset_object_address(& (* result.first), & t.reference()); ^ serialization/include/boost/serialization/hash_set.hpp:62:17: error: no member named 'stack_construct' in namespace 'boost::serialization::detail' detail::stack_construct<Archive, type> t(ar, v); ~~~~~~~~^ serialization/include/boost/serialization/hash_set.hpp:62:33: error: 'Archive' does not refer to a value detail::stack_construct<Archive, type> t(ar, v); ^ serialization/include/boost/serialization/hash_set.hpp:53:16: note: declared here template<class Archive, class Container> ^ serialization/include/boost/serialization/hash_set.hpp:64:54: error: use of undeclared identifier 't' ar >> boost::serialization::make_nvp("item", t.reference()); ^ serialization/include/boost/serialization/hash_set.hpp:66:24: error: use of undeclared identifier 't' = s.insert(t.reference()); ^ serialization/include/boost/serialization/hash_set.hpp:67:49: error: use of undeclared identifier 't' ar.reset_object_address(& (* result), & t.reference()); ^ 1 warning and 10 errors generated. serialization/include/boost/serialization/is_bitwise_serializable.hpp serialization/include/boost/serialization/item_version_type.hpp serialization/include/boost/serialization/level_enum.hpp serialization/include/boost/serialization/level.hpp serialization/include/boost/serialization/list.hpp serialization/include/boost/serialization/map.hpp serialization/include/boost/serialization/nvp.hpp serialization/include/boost/serialization/optional.hpp serialization/include/boost/serialization/priority_queue.hpp serialization/include/boost/serialization/priority_queue.hpp:57:22: error: use of undeclared identifier 'mpl' typedef typename mpl::eval_if< ^ serialization/include/boost/serialization/priority_queue.hpp:57:27: error: expected a qualified name after 'typename' typedef typename mpl::eval_if< ^ serialization/include/boost/serialization/priority_queue.hpp:57:34: error: expected ';' at end of declaration typedef typename mpl::eval_if< ^ ; serialization/include/boost/serialization/priority_queue.hpp:62:17: error: unknown type name 'typex' static_cast<typex &>(t)(ar, file_version); ^ 4 errors generated. serialization/include/boost/serialization/queue.hpp serialization/include/boost/serialization/queue.hpp:57:22: error: use of undeclared identifier 'mpl' typedef typename mpl::eval_if< ^ serialization/include/boost/serialization/queue.hpp:57:27: error: expected a qualified name after 'typename' typedef typename mpl::eval_if< ^ serialization/include/boost/serialization/queue.hpp:57:34: error: expected ';' at end of declaration typedef typename mpl::eval_if< ^ ; serialization/include/boost/serialization/queue.hpp:62:17: error: unknown type name 'typex' static_cast<typex &>(t)(ar, file_version); ^ 4 errors generated. serialization/include/boost/serialization/scoped_ptr.hpp serialization/include/boost/serialization/serialization.hpp serialization/include/boost/serialization/set.hpp In file included from serialization/include/boost/serialization/set.hpp:26: serialization/include/boost/serialization/detail/stack_constructor.hpp:50:31: error: no member named 'load_construct_data_adl' in namespace 'boost::serialization' boost::serialization::load_construct_data_adl( ~~~~~~~~~~~~~~~~~~~~~~^ 1 error generated. serialization/include/boost/serialization/shared_ptr_132.hpp serialization/include/boost/serialization/shared_ptr_helper.hpp serialization/include/boost/serialization/shared_ptr.hpp serialization/include/boost/serialization/singleton.hpp serialization/include/boost/serialization/slist.hpp serialization/include/boost/serialization/smart_cast.hpp serialization/include/boost/serialization/split_free.hpp serialization/include/boost/serialization/split_member.hpp serialization/include/boost/serialization/stack.hpp serialization/include/boost/serialization/stack.hpp:57:22: error: use of undeclared identifier 'mpl' typedef typename mpl::eval_if< ^ serialization/include/boost/serialization/stack.hpp:57:27: error: expected a qualified name after 'typename' typedef typename mpl::eval_if< ^ serialization/include/boost/serialization/stack.hpp:57:34: error: expected ';' at end of declaration typedef typename mpl::eval_if< ^ ; serialization/include/boost/serialization/stack.hpp:62:17: error: unknown type name 'typex' static_cast<typex &>(t)(ar, file_version); ^ 4 errors generated. serialization/include/boost/serialization/state_saver.hpp serialization/include/boost/serialization/static_warning.hpp serialization/include/boost/serialization/string.hpp serialization/include/boost/serialization/strong_typedef.hpp serialization/include/boost/serialization/throw_exception.hpp serialization/include/boost/serialization/tracking_enum.hpp serialization/include/boost/serialization/tracking.hpp serialization/include/boost/serialization/traits.hpp serialization/include/boost/serialization/unique_ptr.hpp serialization/include/boost/serialization/unique_ptr.hpp:32:16: error: no type named 'unique_ptr' in namespace 'std' const std::unique_ptr< T > &t, ~~~~~^ serialization/include/boost/serialization/unique_ptr.hpp:32:26: error: expected ')' const std::unique_ptr< T > &t, ^ serialization/include/boost/serialization/unique_ptr.hpp:30:17: note: to match this '(' inline void save( ^ serialization/include/boost/serialization/unique_ptr.hpp:37:26: error: use of undeclared identifier 't' const T * const tx = t.get(); ^ serialization/include/boost/serialization/unique_ptr.hpp:44:10: error: no type named 'unique_ptr' in namespace 'std' std::unique_ptr< T > &t, ~~~~~^ serialization/include/boost/serialization/unique_ptr.hpp:44:20: error: expected ')' std::unique_ptr< T > &t, ^ serialization/include/boost/serialization/unique_ptr.hpp:42:17: note: to match this '(' inline void load( ^ serialization/include/boost/serialization/unique_ptr.hpp:50:5: error: use of undeclared identifier 't' t.reset(tx); ^ serialization/include/boost/serialization/unique_ptr.hpp:58:10: error: no type named 'unique_ptr' in namespace 'std' std::unique_ptr< T > &t, ~~~~~^ serialization/include/boost/serialization/unique_ptr.hpp:58:20: error: expected ')' std::unique_ptr< T > &t, ^ serialization/include/boost/serialization/unique_ptr.hpp:56:22: note: to match this '(' inline void serialize( ^ serialization/include/boost/serialization/unique_ptr.hpp:61:42: error: use of undeclared identifier 't' boost::serialization::split_free(ar, t, file_version); ^ serialization/include/boost/serialization/unique_ptr.hpp:61:45: error: use of undeclared identifier 'file_version' boost::serialization::split_free(ar, t, file_version); ^ 10 errors generated. serialization/include/boost/serialization/unordered_collections_load_imp.hpp In file included from serialization/include/boost/serialization/unordered_collections_load_imp.hpp:36: serialization/include/boost/serialization/detail/stack_constructor.hpp:50:31: error: no member named 'load_construct_data_adl' in namespace 'boost::serialization' boost::serialization::load_construct_data_adl( ~~~~~~~~~~~~~~~~~~~~~~^ 1 error generated. serialization/include/boost/serialization/unordered_collections_save_imp.hpp serialization/include/boost/serialization/unordered_map.hpp In file included from serialization/include/boost/serialization/unordered_map.hpp:23: In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/5.2.1/../../../../include/c++/5.2.1/unordered_map:35: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.2.1/../../../../include/c++/5.2.1/bits/c++0x_warning.h:32:2: error: This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options. #error This file requires compiler and library support for the \ ^ serialization/include/boost/serialization/unordered_map.hpp:43:16: error: no type named 'unordered_map' in namespace 'std' const std::unordered_map<Key, HashFcn, EqualKey, Allocator> &t, ~~~~~^ serialization/include/boost/serialization/unordered_map.hpp:43:29: error: expected ')' const std::unordered_map<Key, HashFcn, EqualKey, Allocator> &t, ^ serialization/include/boost/serialization/unordered_map.hpp:41:17: note: to match this '(' inline void save( ^ serialization/include/boost/serialization/unordered_map.hpp:48:14: error: no member named 'unordered_map' in namespace 'std' std::unordered_map<Key, HashFcn, EqualKey, Allocator> ~~~~~^ serialization/include/boost/serialization/unordered_map.hpp:48:28: error: 'Key' does not refer to a value std::unordered_map<Key, HashFcn, EqualKey, Allocator> ^ serialization/include/boost/serialization/unordered_map.hpp:36:11: note: declared here class Key, ^ serialization/include/boost/serialization/unordered_map.hpp:49:5: error: expected unqualified-id >(ar, t); ^ serialization/include/boost/serialization/unordered_map.hpp:61:10: error: no type named 'unordered_map' in namespace 'std' std::unordered_map<Key, HashFcn, EqualKey, Allocator> &t, ~~~~~^ serialization/include/boost/serialization/unordered_map.hpp:61:23: error: expected ')' std::unordered_map<Key, HashFcn, EqualKey, Allocator> &t, ^ serialization/include/boost/serialization/unordered_map.hpp:59:17: note: to match this '(' inline void load( ^ serialization/include/boost/serialization/unordered_map.hpp:66:14: error: no member named 'unordered_map' in namespace 'std' std::unordered_map<Key, HashFcn, EqualKey, Allocator>, ~~~~~^ serialization/include/boost/serialization/unordered_map.hpp:66:28: error: 'Key' does not refer to a value std::unordered_map<Key, HashFcn, EqualKey, Allocator>, ^ serialization/include/boost/serialization/unordered_map.hpp:54:11: note: declared here class Key, ^ serialization/include/boost/serialization/unordered_map.hpp:66:62: error: expected unqualified-id std::unordered_map<Key, HashFcn, EqualKey, Allocator>, ^ serialization/include/boost/serialization/unordered_map.hpp:85:10: error: no type named 'unordered_map' in namespace 'std' std::unordered_map<Key, HashFcn, EqualKey, Allocator> &t, ~~~~~^ serialization/include/boost/serialization/unordered_map.hpp:85:23: error: expected ')' std::unordered_map<Key, HashFcn, EqualKey, Allocator> &t, ^ serialization/include/boost/serialization/unordered_map.hpp:83:22: note: to match this '(' inline void serialize( ^ serialization/include/boost/serialization/unordered_map.hpp:88:42: error: use of undeclared identifier 't' boost::serialization::split_free(ar, t, file_version); ^ serialization/include/boost/serialization/unordered_map.hpp:88:45: error: use of undeclared identifier 'file_version' boost::serialization::split_free(ar, t, file_version); ^ serialization/include/boost/serialization/unordered_map.hpp:101:16: error: no type named 'unordered_multimap' in namespace 'std' const std::unordered_multimap< ~~~~~^ serialization/include/boost/serialization/unordered_map.hpp:101:34: error: expected ')' const std::unordered_multimap< ^ serialization/include/boost/serialization/unordered_map.hpp:99:17: note: to match this '(' inline void save( ^ serialization/include/boost/serialization/unordered_map.hpp:108:14: error: no member named 'unordered_multimap' in namespace 'std' std::unordered_multimap<Key, HashFcn, EqualKey, Allocator> ~~~~~^ serialization/include/boost/serialization/unordered_map.hpp:108:33: error: 'Key' does not refer to a value std::unordered_multimap<Key, HashFcn, EqualKey, Allocator> ^ serialization/include/boost/serialization/unordered_map.hpp:94:11: note: declared here class Key, ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. serialization/include/boost/serialization/unordered_set.hpp In file included from serialization/include/boost/serialization/unordered_set.hpp:22: In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/5.2.1/../../../../include/c++/5.2.1/unordered_set:35: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.2.1/../../../../include/c++/5.2.1/bits/c++0x_warning.h:32:2: error: This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options. #error This file requires compiler and library support for the \ ^ serialization/include/boost/serialization/unordered_set.hpp:41:16: error: no type named 'unordered_set' in namespace 'std' const std::unordered_set< ~~~~~^ serialization/include/boost/serialization/unordered_set.hpp:41:29: error: expected ')' const std::unordered_set< ^ serialization/include/boost/serialization/unordered_set.hpp:39:17: note: to match this '(' inline void save( ^ serialization/include/boost/serialization/unordered_set.hpp:48:14: error: no member named 'unordered_set' in namespace 'std' std::unordered_set<Key, HashFcn, EqualKey, Allocator> ~~~~~^ serialization/include/boost/serialization/unordered_set.hpp:48:28: error: 'Key' does not refer to a value std::unordered_set<Key, HashFcn, EqualKey, Allocator> ^ serialization/include/boost/serialization/unordered_set.hpp:34:11: note: declared here class Key, ^ serialization/include/boost/serialization/unordered_set.hpp:49:5: error: expected unqualified-id >(ar, t); ^ serialization/include/boost/serialization/unordered_set.hpp:61:10: error: no type named 'unordered_set' in namespace 'std' std::unordered_set< ~~~~~^ serialization/include/boost/serialization/unordered_set.hpp:61:23: error: expected ')' std::unordered_set< ^ serialization/include/boost/serialization/unordered_set.hpp:59:17: note: to match this '(' inline void load( ^ serialization/include/boost/serialization/unordered_set.hpp:68:14: error: no member named 'unordered_set' in namespace 'std' std::unordered_set<Key, HashFcn, EqualKey, Allocator>, ~~~~~^ serialization/include/boost/serialization/unordered_set.hpp:68:28: error: 'Key' does not refer to a value std::unordered_set<Key, HashFcn, EqualKey, Allocator>, ^ serialization/include/boost/serialization/unordered_set.hpp:54:11: note: declared here class Key, ^ serialization/include/boost/serialization/unordered_set.hpp:68:62: error: expected unqualified-id std::unordered_set<Key, HashFcn, EqualKey, Allocator>, ^ serialization/include/boost/serialization/unordered_set.hpp:89:10: error: no type named 'unordered_set' in namespace 'std' std::unordered_set< ~~~~~^ serialization/include/boost/serialization/unordered_set.hpp:89:23: error: expected ')' std::unordered_set< ^ serialization/include/boost/serialization/unordered_set.hpp:87:22: note: to match this '(' inline void serialize( ^ serialization/include/boost/serialization/unordered_set.hpp:94:20: error: use of undeclared identifier 't' split_free(ar, t, file_version); ^ serialization/include/boost/serialization/unordered_set.hpp:94:23: error: use of undeclared identifier 'file_version' split_free(ar, t, file_version); ^ serialization/include/boost/serialization/unordered_set.hpp:107:16: error: no type named 'unordered_multiset' in namespace 'std' const std::unordered_multiset< ~~~~~^ serialization/include/boost/serialization/unordered_set.hpp:107:34: error: expected ')' const std::unordered_multiset< ^ serialization/include/boost/serialization/unordered_set.hpp:105:17: note: to match this '(' inline void save( ^ serialization/include/boost/serialization/unordered_set.hpp:114:14: error: no member named 'unordered_multiset' in namespace 'std' std::unordered_multiset<Key, HashFcn, EqualKey, Allocator> ~~~~~^ serialization/include/boost/serialization/unordered_set.hpp:114:33: error: 'Key' does not refer to a value std::unordered_multiset<Key, HashFcn, EqualKey, Allocator> ^ serialization/include/boost/serialization/unordered_set.hpp:100:11: note: declared here class Key, ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. serialization/include/boost/serialization/utility.hpp serialization/include/boost/serialization/valarray.hpp serialization/include/boost/serialization/variant.hpp serialization/include/boost/serialization/vector_135.hpp serialization/include/boost/serialization/vector.hpp serialization/include/boost/serialization/version.hpp serialization/include/boost/serialization/void_cast_fwd.hpp serialization/include/boost/serialization/void_cast.hpp serialization/include/boost/serialization/weak_ptr.hpp serialization/include/boost/serialization/wrapper.hpp
comment:3 by , 6 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
OK - I'm fixing this on my machine - I'll check in to develop shortly
comment:4 by , 6 years ago
Yep - I'm now seeing them all compile cleanly under -std=c++11
except hash_map.hpp
and hash_set.hpp
which have deprecated warnings before any failures (perhaps time to remove these if they can't be made to compile cleanly by themselves?).
Thanks very much for addressing this quickly
comment:5 by , 6 years ago
Is there a workaround for this? It appears that boost/serialization/set.hpp
is completely broken on Boost 1.58, the version that's the default on Ubuntu 16.04 LTS.
comment:6 by , 6 years ago
Mike, for me a workaround was to include boost/serialization/serialization.hpp just before including boost/serialization/set.hpp , this did the trick.
set.hp - right
what are the other headers and what are they missing? In other words, what's the fix?