[pkg-boost-devel] Bug#703325: libboost1.50-dev: Compile errors when `boost/chrono/duration.hpp` and `apache2/httpd.h` are included
Kirill Spitsin
tn at 0x746e.org.ua
Mon Mar 18 14:36:29 UTC 2013
Package: libboost1.50-dev
Version: 1.50.0-2
Severity: normal
Dear Maintainer,
When trying to compile such file:
% cat test.cpp
#include <apache2/httpd.h>
#include <boost/chrono/duration.hpp>
int main() {}
I'm getting the following error:
% gcc -lboost_system -I/usr/include/apr-1.0 1.cpp
In file included from 1.cpp:2:0:
/usr/include/boost/chrono/duration.hpp: In function ‘typename boost::enable_if<boost::mpl::and_<boost::is_convertible<Rep1, typename boost::common_type<Rep1, Rep2>::type>, boost::is_convertible<Rep2, typename boost::common_type<Rep1, Rep2>::type> >, boost::chrono::duration<typename boost::common_type<Rep1, Rep2>::type, Period> >::type boost::chrono::operator*(const boost::chrono::duration<Rep1, Period>&, const Rep2&)’:
/usr/include/boost/chrono/duration.hpp:566:54: error: expected unqualified-id before numeric constant
/usr/include/boost/chrono/duration.hpp:567:34: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Rep, class Period> class boost::chrono::duration’
/usr/include/boost/chrono/duration.hpp:567:34: error: expected a type, got ‘13’
/usr/include/boost/chrono/duration.hpp:567:38: error: invalid type in declaration before ‘;’ token
/usr/include/boost/chrono/duration.hpp:568:23: error: request for member ‘count’ in ‘(CD)(d)’, which is of non-class type ‘CD {aka int}’
/usr/include/boost/chrono/duration.hpp:568:16: error: expected primary-expression before ‘(’ token
/usr/include/boost/chrono/duration.hpp:568:23: error: request for member ‘count’ in ‘(CD)(d)’, which is of non-class type ‘CD {aka int}’
/usr/include/boost/chrono/duration.hpp:568:43: error: expected type-specifier before numeric constant
/usr/include/boost/chrono/duration.hpp:568:43: error: expected ‘>’ before numeric constant
/usr/include/boost/chrono/duration.hpp:568:43: error: expected ‘(’ before numeric constant
/usr/include/boost/chrono/duration.hpp: In function ‘typename boost::disable_if<boost::chrono::detail::is_duration<Rep2>, typename boost::chrono::detail::duration_divide_result<boost::chrono::duration<Rep1, Period>, Rep2>::type>::type boost::chrono::operator/(const boost::chrono::duration<Rep1, Period>&, const Rep2&)’:
/usr/include/boost/chrono/duration.hpp:595:56: error: expected unqualified-id before numeric constant
/usr/include/boost/chrono/duration.hpp:596:36: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Rep, class Period> class boost::chrono::duration’
/usr/include/boost/chrono/duration.hpp:596:36: error: expected a type, got ‘13’
/usr/include/boost/chrono/duration.hpp:596:40: error: invalid type in declaration before ‘;’ token
/usr/include/boost/chrono/duration.hpp:598:23: error: request for member ‘count’ in ‘(CD)(d)’, which is of non-class type ‘CD {aka int}’
/usr/include/boost/chrono/duration.hpp:598:16: error: expected primary-expression before ‘(’ token
/usr/include/boost/chrono/duration.hpp:598:23: error: request for member ‘count’ in ‘(CD)(d)’, which is of non-class type ‘CD {aka int}’
/usr/include/boost/chrono/duration.hpp:598:43: error: expected type-specifier before numeric constant
/usr/include/boost/chrono/duration.hpp:598:43: error: expected ‘>’ before numeric constant
/usr/include/boost/chrono/duration.hpp:598:43: error: expected ‘(’ before numeric constant
/usr/include/boost/chrono/duration.hpp: In function ‘typename boost::disable_if<boost::chrono::detail::is_duration<Rep2>, typename boost::chrono::detail::duration_modulo_result<boost::chrono::duration<Rep1, Period>, Rep2>::type>::type boost::chrono::operator%(const boost::chrono::duration<Rep1, Period>&, const Rep2&)’:
/usr/include/boost/chrono/duration.hpp:636:56: error: expected unqualified-id before numeric constant
/usr/include/boost/chrono/duration.hpp:637:36: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Rep, class Period> class boost::chrono::duration’
/usr/include/boost/chrono/duration.hpp:637:36: error: expected a type, got ‘13’
/usr/include/boost/chrono/duration.hpp:637:40: error: invalid type in declaration before ‘;’ token
/usr/include/boost/chrono/duration.hpp:639:23: error: request for member ‘count’ in ‘(CD)(d)’, which is of non-class type ‘CD {aka int}’
/usr/include/boost/chrono/duration.hpp:639:16: error: expected primary-expression before ‘(’ token
/usr/include/boost/chrono/duration.hpp:639:23: error: request for member ‘count’ in ‘(CD)(d)’, which is of non-class type ‘CD {aka int}’
/usr/include/boost/chrono/duration.hpp:639:43: error: expected type-specifier before numeric constant
/usr/include/boost/chrono/duration.hpp:639:43: error: expected ‘>’ before numeric constant
/usr/include/boost/chrono/duration.hpp:639:43: error: expected ‘(’ before numeric constant
That's probably because of `#define CR 13` in httpd.h and `typedef typename common_type<Rep1, Rep2>::type CR` in duration.hpp.
Also after
# sed -e 's/\bCR\b/CRRRRR/' -i.orig /usr/include/boost/chrono/duration.hpp
same test.cpp can be built successufully.
Apache version:
ii apache2 2.2.22-13
--
Regards,
Kirill
-- System Information:
Debian Release: 7.0
APT prefers unstable
APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 3.2.0-3-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=ru_RU.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages libboost1.50-dev depends on:
ii libc6 2.17-0experimental2
ii libgcc1 1:4.7.2-5
ii libicu48 4.8.1.1-11
ii libstdc++6 4.7.2-5
ii libstdc++6-4.4-dev [libstdc++-dev] 4.4.7-3
ii libstdc++6-4.7-dev [libstdc++-dev] 4.7.2-5
libboost1.50-dev recommends no packages.
Versions of packages libboost1.50-dev suggests:
ii default-jdk 1:1.6-47
ii docbook-xml 4.5-7.1
ii docbook-xsl 1.76.1+dfsg-1
pn doxygen <none>
pn fop <none>
ii libboost-chrono1.50-dev 1.50.0-2
ii libboost-date-time1.50-dev 1.50.0-2
ii libboost-exception1.50-dev 1.50.0-2
ii libboost-filesystem1.50-dev 1.50.0-2
ii libboost-graph-parallel1.50-dev 1.50.0-2
ii libboost-graph1.50-dev 1.50.0-2
ii libboost-iostreams1.50-dev 1.50.0-2
ii libboost-locale1.50-dev 1.50.0-2
ii libboost-math1.50-dev 1.50.0-2
ii libboost-mpi1.50-dev 1.50.0-2
ii libboost-program-options1.50-dev 1.50.0-2
ii libboost-python1.50-dev 1.50.0-2
ii libboost-random1.50-dev 1.50.0-2
ii libboost-regex1.50-dev 1.50.0-2
ii libboost-serialization1.50-dev 1.50.0-2
ii libboost-signals1.50-dev 1.50.0-2
ii libboost-system1.50-dev 1.50.0-2
ii libboost-test1.50-dev 1.50.0-2
ii libboost-thread1.50-dev 1.50.0-2
ii libboost-timer1.50-dev 1.50.0-2
ii libboost-wave1.50-dev 1.50.0-2
pn libboost1.50-doc <none>
ii xsltproc 1.1.26-14
-- no debconf information
More information about the pkg-boost-devel
mailing list