This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/13736] New: [gcc-3.4 parser regression] Some compound casts rejected
- From: "jan at etpmod dot phys dot tue dot nl" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 19 Jan 2004 09:11:02 -0000
- Subject: [Bug c++/13736] New: [gcc-3.4 parser regression] Some compound casts rejected
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
The following snippet refuses to compile with the gcc-3.4 branch (and with the
trunk, I guess). It compiles fine with previous versions. The offending line
and work-arounds are indicated as comments. Is it the parser, or is it me?
#include <string>
int main()
{
using std::string;
string s1(string( (string )(""))); // OK
string s2(string( (const char*)(""))); // Does not compile
typedef const char* charp;
string s3(string( (charp)(""))); // Workaround: intermediate typedef
string s4((string( (const char*)("")))); // Workaround: extra parenthesis
return 0;
}
jan@nbjapan:~/src $ g++ t.cpp
t.cpp: In function `int main()':
t.cpp:8: error: expected `)' before '(' token
t.cpp:8: error: expected `,' or `...' before '(' token
t.cpp:8: error: expected init-declarator before ')' token
t.cpp:8: error: expected `,' or `;' before ')' token
jan@nbjapan:~/src $ g++ -v
Reading specs from /home/jan/local/gcc-3.4/lib/gcc/i686-pc-linux-gnu/3.4.0/
specs
Configured with: ../gcc-3.4/configure --prefix=/home/jan/local/gcc-3.4
--enable-languages=c,c++ --disable-checking
Thread model: posix
gcc version 3.4.0 20040119 (prerelease)
--
Summary: [gcc-3.4 parser regression] Some compound casts rejected
Product: gcc
Version: 3.4.0
Status: UNCONFIRMED
Severity: critical
Priority: P2
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jan at etpmod dot phys dot tue dot nl
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: pc-linux-gnu
GCC host triplet: pc-linux-gnu
GCC target triplet: pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13736