[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