$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Dick Bridges (dbridges_at_[hidden])
Date: 2006-01-30 12:21:51
One of our compilers is giving a warning and I cannot understand
why. Maybe I'm missing a #define somewhere? I don't understand
how the compiler got past the BOOST_MPL_ASSERT_RELATION macros to
even "see" the offending line.
Given the following code:
#include <boost/xpressive/xpressive.hpp>
using namespace boost::xpressive;
int main(int argc, char **argv) {
sregex re_ = (*_ >> "CALL" >> *_ >> "CONNECTED" >> *_);
return(0);
}
gcc (GCC) 3.4.4 20050721 (Red Hat 3.4.4-2)
compiles and links successfully with no warnings.
On the other hand, our [arm-softfloat-linux-gnu-gcc
(GCC) 3.3.3] compiler gives the following warnings:
Building file: ../main.cpp
arm-softfloat-linux-gnu-g++ -D_REENTRANT -DARCH=ARM
-I/usr/local/boost_1_33_1
-O3 -Wall -c -fmessage-length=0 -Wno-non-virtual-dtor
-omain.o ../main.cpp
[snip...snip,snip...snip]
../main.cpp:7: instantiated from here
/usr/local/boost_1_33_1/boost/xpressive/traits/cpp_regex_traits.hpp:241:
warning: comparison is always false due to limited range of data
type
/usr/local/boost_1_33_1/boost/xpressive/traits/cpp_regex_traits.hpp:241:
warning: comparison is always false due to limited range of data type
Finished building: ../main.cpp
Building target: parse_warning
arm-softfloat-linux-gnu-g++ -o parse_warning main.o
Finished building: parse_warning
Build complete for project parse_warning
Here is the "offending" code:
static bool is_newline(Char ch)
{
BOOST_MPL_ASSERT_RELATION('\r', ==, L'\r');
BOOST_MPL_ASSERT_RELATION('\n', ==, L'\n');
BOOST_MPL_ASSERT_RELATION('\f', ==, L'\f');
241 ==> return L'\r' == ch || L'\n' == ch || L'\f' == ch
|| (1 < SizeOfChar && (0x2028u == ch || 0x2029u == ch ||
0x85u == ch));
}
Thanks for your time. Any assistance you could provide would be greatly
appreciated.
Regards,
Dick Bridges