$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: [boost] [dynamic_bitset] proposed fix for ticket #2842
From: Juan Antonio Zaratiegui Vallecillo, a.k.a. Zara (zara_at_[hidden])
Date: 2009-05-04 04:09:11
Dear all,
I have suffered the effects described on ticket #2842:
"dynamic_bitset.hpp fails to compile with g++ (Ubuntu 4.3.3-5ubuntu2)
4.3.3" after upgrading from Ubuntu 8.10 to 9.04.
After some testing, I have found a possible fix, but I would like to
know how may I test thoroughly over as many compiler/versions as
possible before I may suggest its inclusion in trunk.
Fix data:
        -- tested under gcc versión 4.3.3 (Ubuntu 4.3.3-5ubuntu4)
        -- tested under gcc versión 4.1.2 20080704 (Red Hat 4.1.2-44)
        -- Patch data:
<PATCH>
Index: boost/dynamic_bitset/dynamic_bitset.hpp
===================================================================
--- boost/dynamic_bitset/dynamic_bitset.hpp	(revision 52752)
+++ boost/dynamic_bitset/dynamic_bitset.hpp	(working copy)
@@ -999,11 +999,17 @@
     using detail::dynamic_bitset_impl::access_by_blocks;
     using detail::dynamic_bitset_impl::value_to_type;
+#if BOOST_WORKAROUND(__GNUC__, == 4) && (__GNUC_MINOR__ >= 3)
+    // NOTE: Explicitly qualificationf of "bits_per_block"
+    //       breaks compilation on gcc 4.3.3
+    const bool no_padding = bits_per_block == CHAR_BIT * sizeof(Block);
+#else
     // NOTE: Explicitly qualifying "bits_per_block" to workaround
     //       regressions of gcc 3.4.x
     const bool no_padding =
         dynamic_bitset<Block, Allocator>::bits_per_block
         == CHAR_BIT * sizeof(Block);
+#endif
     const bool enough_table_width = table_width >= CHAR_BIT;
</PATCH>
TIA
Zara