$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Vladimir Prus (ghost_at_[hidden])
Date: 2005-07-14 01:57:29
Hello,
I suggest that the following patch be applied to type_traits/detail/cv_traits_impl.hpp:
--- cv_traits_impl.hpp	22 Jun 2005 16:59:26 -0000	1.4
+++ cv_traits_impl.hpp	14 Jul 2005 06:49:40 -0000
@@ -19,7 +19,7 @@
 // implementation helper:
 
 
-#if !(BOOST_WORKAROUND(__GNUC__,== 3) && (__GNUC_MINOR__ <= 2))
+#if !(BOOST_WORKAROUND(__GNUC__,== 3) && BOOST_WORKAROUND(__GNUC_MINOR__, <= 2))
 namespace boost {
 namespace detail {
 #else
The reason is that later in the file, we have:
#if BOOST_WORKAROUND(__GNUC__,== 3) && BOOST_WORKAROUND(__GNUC_MINOR__, <= 2)
and first condition does not exactly match the second condition.
Specifically, suppose __GNUC__ is set to 3 and __GNUC_MINOR__ is not set. The first condition will evaluate to
    ! (BOOST_WORKAROUND(__GNUC__, == 3) && (__GNUC_MINOR__ <= 2)       =
    ! (1  && (0 <= 2))                                                 =
    ! (1  && 1 )                                                       =
    0
The second condition in the file will evaluate to:
    BOOST_WORKAROUND(__GNUC__,== 3) && BOOST_WORKAROUND(__GNUC_MINOR__, <= 2) =
    1 && 0                                                                    =
    0
So, both conditions evaluate to the same value, while they are supposed to be mutually exclusive.
The case where __GNUC_MINOR__ is not set is a pathological -- I've found it when playing with some C++ parser,
but the patch should do no harm.
Opinions?
- Volodya