This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/12397] New: 3.4 regression: two-stage name lookup (?) argument shadowed by global type
- 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: 25 Sep 2003 07:34:51 -0000
- Subject: [Bug c++/12397] New: 3.4 regression: two-stage name lookup (?) argument shadowed by global type
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12397
Summary: 3.4 regression: two-stage name lookup (?) argument
shadowed by global type
Product: gcc
Version: 3.4
Status: UNCONFIRMED
Severity: normal
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: i686-pc-linux-gnu
GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu
struct foo { };
template <typename T> struct bar
{
bar(){}
int i;
bar (const bar<T>& foo) : i (foo.i) {}
};
int main()
{
bar<int> b1;
bar<int> b2(b1);
}
With gcc-head (today) this gives:
/usr/local/gcc-head/bin/g++ t.cpp
t.cpp: In copy constructor `bar<T>::bar(const bar<T>&)':
t.cpp:7: error: 'struct foo' has no member named 'i'
Observations:
It seems that in line 7 the compiler tries to access the member i
of the global struct foo, since:
1) removing struct foo solves the problem
2) after adding a member 'int i' to struct foo the code compiles (!)
a member of a non-existant object seems to be accessed then.
The equivalent code without templates compiles fine.
Previous gcc-releases compile this code without problems.
I re-read 14.6 just to be sure but assume (hope!) that this is a compiler bug. It maybe remotely
related to the weirdness of PR12370.
/usr/local/gcc-head/bin/g++ -v
Reading specs from /usr/local/gcc-head/lib/gcc/i686-pc-linux-gnu/3.4/specs
Configured with: ../gcc-head/configure --prefix=/usr/local/gcc-head --enable-lan
guages=c,c++ : (reconfigured) : (reconfigured) : (reconfigured)
Thread model: posix
gcc version 3.4 20030925 (experimental)