Boost logo

Boost :

From: Jonathan Wakely (cow_at_[hidden])
Date: 2005-03-29 03:39:17


The libstdc++ debug mode doesn't work with forward declarations of std
templates (since when using the debug mode std::vector is really
__gnu_debug_def::vector, visible in std due to GCC's "strong using"
extension)

Lambda's boost/lambda/detail/operator_return_type_traits.hpp seems to
account for this, but only checks for GCC 3.4 not 4.0, causing the
error shown here for GCC 4.x in debug mode (*):
http://www.redi.uklinux.net/src/boost/status/cs-Linux-links.html#lambda-constructor_tests-gcc-debug-mode

The workaround on line 876 should be changed to account for GCC 4.x or
alternatively, test for the debug mode explicitly. The attached patch
does the test explicitly and disables all forward decls of std templates
when _GLIBCXX_DEBUG is defined. I don't know whether it's preferred
to simply disable the forward decls for non-debug mode as well.

jon

(*) regression test results for GCC 4.0 & 4.1 on x86_64 GNU/Linux here:
http://www.redi.uklinux.net/src/boost/status/cs-Linux.html
All toolsets use GCC's concept-checks, the gcc-debug-mode toolset also
uses the libstdc++ debug mode.

-- 
"Always Read the Label"
	- anon.



Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk