Opened 7 years ago

Closed 6 years ago

Last modified 6 years ago

#12126 closed Bugs (fixed)

Some serialization headers fail to compile independently

Reported by: Tony Lewis <tonyelewis@…> 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 Robert Ramey, 7 years ago

set.hp - right

what are the other headers and what are they missing? In other words, what's the fix?

comment:2 by Tony Lewis <tonyelewis@…>, 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 Robert Ramey, 6 years ago

Resolution: fixed
Status: newclosed

OK - I'm fixing this on my machine - I'll check in to develop shortly

comment:4 by Tony Lewis <tonyelewis@…>, 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 Mike Purvis, 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 Jan, 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.

Note: See TracTickets for help on using tickets.