[pkg-boost-devel] Bug#836340: libboost1.61-dev: Forward-declaration breaks int128 auto-detect, at least optional_fwd.hpp

Ben Wiederhake BenWiederhake.GitHub at gmx.de
Thu Sep 1 21:06:18 UTC 2016


Package: libboost1.61-dev
Version: 1.61.0+dfsg-2.1
Severity: important

Dear Maintainer,

here is the simplest failing example I could create:

    #include <boost/optional/optional_fwd.hpp>
    #include <boost/optional.hpp>
    int main() { return ; }

Compile like this:
    clang++ -std=c++11 test.c
    # OR
    g++ -std=c++11 test.c

Expected behavior:
Compiles without error.

Actual behavior:
Does not compile.

First error from clang++:
In file included from test.cpp:2:
In file included from /usr/include/boost/optional.hpp:15:
In file included from /usr/include/boost/optional/optional.hpp:35:
In file included from
/usr/include/boost/type_traits/type_with_alignment.hpp:12:
In file included from /usr/include/boost/type_traits/is_pod.hpp:14:
In file included from /usr/include/boost/type_traits/is_scalar.hpp:12:
In file included from /usr/include/boost/type_traits/is_arithmetic.hpp:12:
/usr/include/boost/type_traits/is_integral.hpp:75:38: error: no member named
'int128_type' in namespace 'boost'
template<> struct is_integral<boost::int128_type> : public true_type{};
                              ~~~~~~~^

Apparently, the OpenBSD people have/had the same issue [1], which goes like
this:
(summary of link)
boost does not like mixing different compilers at build and run time.
Building boost with some gcc that doesn't support __int128 results in a
boost/config/user.hpp missing the "BOOST_HAS_INT128" define.
Then, boost/config/compiler/*.hpp re-enables it, but boost/config/suffix.hpp
doesn't catch wind of this.

Quick and dirty manual workaround:
echo '#undef __SIZEOF_INT128__' | sudo tee -a
/usr/include/boost/config/user.hpp
to enable it permanently.

I mark this as 'important', because this disrupts compilation for anyone using
forward-declarations, anywhere.  Feel free to downgrade this report if it
doesn't.

Cheers,
Ben Wiederhake

[1] http://openbsd-archive.7691.n7.nabble.com/devel-boost-fix-error-no-member-
named-int128-type-in-namespace-boost-td297541.html



-- System Information:
Debian Release: stretch/sid
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'testing'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.6.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=de_DE.utf8, LC_CTYPE=de_DE.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages libboost1.61-dev depends on:
ii  libstdc++-5-dev [libstdc++-dev]  5.4.1-1
ii  libstdc++-6-dev [libstdc++-dev]  6.1.1-11

libboost1.61-dev recommends no packages.

Versions of packages libboost1.61-dev suggests:
ii  libboost-atomic1.61-dev           1.61.0+dfsg-2.1
ii  libboost-chrono1.61-dev           1.61.0+dfsg-2.1
pn  libboost-context1.61-dev          <none>
pn  libboost-coroutine1.61-dev        <none>
ii  libboost-date-time1.61-dev        1.61.0+dfsg-2.1
pn  libboost-exception1.61-dev        <none>
ii  libboost-filesystem1.61-dev       1.61.0+dfsg-2.1
pn  libboost-graph-parallel1.61-dev   <none>
pn  libboost-graph1.61-dev            <none>
ii  libboost-iostreams1.61-dev        1.61.0+dfsg-2.1
pn  libboost-locale1.61-dev           <none>
pn  libboost-log1.61-dev              <none>
pn  libboost-math1.61-dev             <none>
pn  libboost-mpi-python1.61-dev       <none>
pn  libboost-mpi1.61-dev              <none>
pn  libboost-program-options1.61-dev  <none>
pn  libboost-python1.61-dev           <none>
pn  libboost-random1.61-dev           <none>
ii  libboost-regex1.61-dev            1.61.0+dfsg-2.1
ii  libboost-serialization1.61-dev    1.61.0+dfsg-2.1
pn  libboost-signals1.61-dev          <none>
ii  libboost-system1.61-dev           1.61.0+dfsg-2.1
pn  libboost-test1.61-dev             <none>
ii  libboost-thread1.61-dev           1.61.0+dfsg-2.1
pn  libboost-timer1.61-dev            <none>
pn  libboost-wave1.61-dev             <none>
pn  libboost1.61-doc                  <none>
pn  libboost1.61-tools-dev            <none>
pn  libmpfrc++-dev                    <none>
pn  libntl-dev                        <none>

-- no debconf information



More information about the pkg-boost-devel mailing list