This is the mail archive of the
gcc-prs@gcc.gnu.org
mailing list for the GCC project.
c++/5796: g++ 3.1: template class problem
- From: snyder at fnal dot gov
- To: gcc-gnats at gcc dot gnu dot org
- Date: Thu, 28 Feb 2002 14:59:59 -0600
- Subject: c++/5796: g++ 3.1: template class problem
- Reply-to: snyder at fnal dot gov
>Number: 5796
>Category: c++
>Synopsis: g++ 3.1: template class problem
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: rejects-legal
>Submitter-Id: net
>Arrival-Date: Thu Feb 28 13:06:00 PST 2002
>Closed-Date:
>Last-Modified:
>Originator: scott snyder
>Release: 3.1 20020227 (prerelease)
>Organization:
>Environment:
System: Linux karma 2.4.9-13 #1 Tue Oct 30 20:11:04 EST 2001 i686 unknown
Architecture: i686
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../egcs/configure --prefix=/usr/local/egcs --enable-threads=posix --enable-long-long --enable-languages=c,c++,f77
>Description:
g++ gives a bogus error message compiling the source below:
$ cc1plus -quiet x.cc
x.cc: In function `void init_mapping(X<int>*)':
x.cc:9: invalid use of undefined type `struct X<int>'
x.cc:3: forward declaration of `struct X<int>'
Note that the error goes away if the line
mapping[0].first = 0;
is changed to the equivalent
mapping->first = 0;
>How-To-Repeat:
---------------------------------------------------------------
template <class T>
struct X
{
int first;
};
void init_mapping (X<int>* mapping)
{
mapping[0].first = 0;
}
---------------------------------------------------------------
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted: