Boost updated to 1.58.0 in rawhide and f23

Jonathan Wakely jwakely at redhat.com
Wed Aug 5 09:47:13 UTC 2015


On 31/07/15 14:49 +0100, Richard W.M. Jones wrote:
>Ceph failed to build with some impenetrable C++ error:
>
>In file included from /usr/include/boost/optional/optional.hpp:28:0,
>                 from /usr/include/boost/optional/optional_io.hpp:19,
>                 from ./include/encoding.h:289,
>                 from ./include/uuid.h:8,
>                 from ./include/types.h:21,
>                 from mon/OSDMonitor.h:28,
>                 from mon/OSDMonitor.cc:21:
>/usr/include/boost/variant/get.hpp: In instantiation of 'typename boost::add_reference<const U>::type boost::strict_get(const boost::variant<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>&) [with U = int; T0 = std::__cxx11::basic_string<char>; T1 = bool; T2 = long long int; T3 = double; T4 = std::vector<std::__cxx11::basic_string<char> >; T5 = boost::detail::variant::void_; T6 = boost::detail::variant::void_; T7 = boost::detail::variant::void_; T8 = boost::detail::variant::void_; T9 = boost::detail::variant::void_; T10 = boost::detail::variant::void_; T11 = boost::detail::variant::void_; T12 = boost::detail::variant::void_; T13 = boost::detail::variant::void_; T14 = boost::detail::variant::void_; T15 = boost::detail::variant::void_; T16 = boost::detail::variant::void_; T17 = boost::detail::variant::void_; T18 = boost::detail::variant::void_; T19 = boost::detail::variant::void_; typename boost::add_reference<const U>::type = const int&]':
>/usr/include/boost/variant/get.hpp:299:25:   required from 'typename boost::add_reference<const U>::type boost::get(const boost::variant<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>&) [with U = int; T0 = std::__cxx11::basic_string<char>; T1 = bool; T2 = long long int; T3 = double; T4 = std::vector<std::__cxx11::basic_string<char> >; T5 = boost::detail::variant::void_; T6 = boost::detail::variant::void_; T7 = boost::detail::variant::void_; T8 = boost::detail::variant::void_; T9 = boost::detail::variant::void_; T10 = boost::detail::variant::void_; T11 = boost::detail::variant::void_; T12 = boost::detail::variant::void_; T13 = boost::detail::variant::void_; T14 = boost::detail::variant::void_; T15 = boost::detail::variant::void_; T16 = boost::detail::variant::void_; T17 = boost::detail::variant::void_; T18 = boost::detail::variant::void_; T19 = boost::detail::variant::void_; typename boost::add_reference<const U>::type = const int&]'
>./common/cmdparse.h:47:26:   required from 'bool cmd_getval(CephContext*, const cmdmap_t&, std::__cxx11::string, T&) [with T = int; cmdmap_t = std::map<std::__cxx11::basic_string<char>, boost::variant<std::__cxx11::basic_string<char>, bool, long long int, double, std::vector<std::__cxx11::basic_string<char> > > >; std::__cxx11::string = std::__cxx11::basic_string<char>]'
>mon/OSDMonitor.cc:3002:54:   required from here
>/usr/include/boost/variant/get.hpp:195:5: error: invalid application of 'sizeof' to incomplete type 'boost::STATIC_ASSERTION_FAILURE<false>'
>     BOOST_STATIC_ASSERT_MSG(
>     ^
>Makefile:15876: recipe for target 'mon/OSDMonitor.lo' failed
>
>----------------------------------------------------------------------
>
>Any ideas on that one?  This blocks qemu and all the rest of the virt
>stack.

It's a static assertion failure. Line 195 in boost/variant/get.hpp is

    BOOST_STATIC_ASSERT_MSG(
        (boost::detail::variant::holds_element<boost::variant< BOOST_VARIANT_ENUM_PARAMS(T) >, const U >::value),
        "boost::variant does not contain specified type U, "
        "call to boost::get<U>(const boost::variant<T...>*) will always return NULL"
    );

Which is pretty descriptive.

It's the same problem as described at
https://lists.fedoraproject.org/pipermail/devel/2015-July/212789.html
i.e. caused by the breaking change to Boost.Variant, which can be
fixed by changing the source or defining a macro to use relaxed_get()
intstead of strict_get().




More information about the devel mailing list