incubator-stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Sebor <se...@roguewave.com>
Subject Re: compilation errors in 27.istream.fmat.arith.cpp
Date Fri, 09 Mar 2007 01:01:31 GMT
Mark Brown wrote:
> Here's another test that throws an error at compile time. It looks like the compiler
doesn't like the using N as the dimension of the array. I thought using variables as array
dimensions was not allowed in C++?

It's not but the variable is really a constant integral expression
(i.e., it's declared as a static local const initialized with the
value of another constant integral expression (a static const
integer data member of a class), so it's a compiler bug. I was
able to reduce it to a small test case and reproduce the error
with gcc 3.4.6 on Linux. I opened an issue in Jira for future
reference: https://issues.apache.org/jira/browse/STDCXX-351

I'll submit a patch for it shortly.

Thanks for pointing it out!
Martin

> 
> gcc -pedantic -nostdinc++ -g  -W -Wall -Wcast-qual -Winline -Wshadow -Wwrite-strings
-Wno-long-long -Wcast-align  -I/home/mbrown/stdcxx/include/ansi -D_RWSTDDEBUG    -D_RWSTD_USE_CONFIG
-I/home/mbrown/stdcxx/include -I/home/mbrown/stdcxx-gcc-3.4.4-11s/include -I/home/mbrown/stdcxx/../rwtest
-I/home/mbrown/stdcxx/../rwtest/include -I/home/mbrown/stdcxx/tests/include  -L/home/mbrown/stdcxx-gcc-3.4.4-11s/rwtest
-lrwtest11s  -L/home/mbrown/stdcxx-gcc-3.4.4-11s/lib -lstd11s   /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp
/home/mbrown/stdcxx-gcc-3.4.4-11s/lib/libstd11s.a /home/mbrown/stdcxx-gcc-3.4.4-11s/rwtest/librwtest11s.a
 -lsupc++ -lcatgets -liconv -lm -o 27.istream.fmat.arith
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp: In function `const std::locale
make_locale(const CharT*, const LocaleData&)':
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:67: error: ISO C++ forbids
variable-size array `chars'
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:68: error: ISO C++ forbids
variable-size array `masks'
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp: In function `const std::locale
make_locale(const CharT*, const LocaleData&) [with CharT = char]':
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:179:   instantiated from
`const std::locale make_locale(const CharT*, const Traits*, const LocaleData&) [with CharT
= char, Traits = std::char_traits<char>]'
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:309:   instantiated from
`void test_extractor(CharT*, Traits*, ArithmeticType*, const char*, const char*, const char*,
int, const char*, const char*, size_t, const LocaleData&, int, int, int, int, int, int,
int, ArithmeticType, ArithmeticType) [with CharT = char, Traits = std::char_traits<char>,
ArithmeticType = bool]'
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:699:   instantiated from
`void test_bool(CharT*, Traits*, const char*, const char*) [with CharT = char, Traits = std::char_traits<char>]'
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:1245:   instantiated from
`void test_extractor(CharT*, Traits*, const char*, const char*) [with CharT = char, Traits
= std::char_traits<char>]'
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:1310:   instantiated from
here
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:67: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:67: error: storage size
of `chars' isn't constant
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:68: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:68: error: storage size
of `masks' isn't constant
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:71: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:71: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:75: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:75: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:76: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:76: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:83: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:83: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:88: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:88: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp: In function `const std::locale
make_locale(const CharT*, const LocaleData&) [with CharT = wchar_t]':
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:179:   instantiated from
`const std::locale make_locale(const CharT*, const Traits*, const LocaleData&) [with CharT
= wchar_t, Traits = std::char_traits<wchar_t>]'
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:309:   instantiated from
`void test_extractor(CharT*, Traits*, ArithmeticType*, const char*, const char*, const char*,
int, const char*, const char*, size_t, const LocaleData&, int, int, int, int, int, int,
int, ArithmeticType, ArithmeticType) [with CharT = wchar_t, Traits = std::char_traits<wchar_t>,
ArithmeticType = bool]'
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:699:   instantiated from
`void test_bool(CharT*, Traits*, const char*, const char*) [with CharT = wchar_t, Traits =
std::char_traits<wchar_t>]'
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:1245:   instantiated from
`void test_extractor(CharT*, Traits*, const char*, const char*) [with CharT = wchar_t, Traits
= std::char_traits<wchar_t>]'
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:1322:   instantiated from
here
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:67: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:67: error: storage size
of `chars' isn't constant
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:68: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:68: error: storage size
of `masks' isn't constant
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:71: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:71: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:75: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:75: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:76: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:76: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:83: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:83: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:88: error: ISO C++ forbids
variable-size array
> /home/mbrown/stdcxx/tests/iostream/27.istream.fmat.arith.cpp:88: error: ISO C++ forbids
variable-size array
> make: *** [27.istream.fmat.arith] Error 1
> 
> 
> -- Mark
> 


Mime
View raw message