c++/7934: definition of static member for template class miss ing in obj file

Gu, Michael Michael_Gu@maxtor.com
Wed Dec 4 06:56:00 GMT 2002


The following reply was made to PR c++/7934; it has been noted by GNATS.

From: "Gu, Michael" <Michael_Gu@maxtor.com>
To: "'bangerth@dealii.org'" <bangerth@dealii.org>,
   "'gcc-bugs@gcc.gnu.org'" <gcc-bugs@gcc.gnu.org>,
   "'gcc-prs@gcc.gnu.org'"
	 <gcc-prs@gcc.gnu.org>,
   "Gu, Michael" <Michael_Gu@Maxtor.com>,
   "'mkjyg@charter.net'" <mkjyg@charter.net>,
   "'nobody@gcc.gnu.org'"
	 <nobody@gcc.gnu.org>,
   "'gcc-gnats@gcc.gnu.org'" <gcc-gnats@gcc.gnu.org>
Cc: "'mkjyg@charter.net'" <mkjyg@charter.net>
Subject: RE: c++/7934: definition of static member for template class miss
	ing in obj file
Date: Wed, 4 Dec 2002 07:41:04 -0700 

 Wolfgang,
 
 My description was not detailed enough. Here is the code example:
 
 template <class T>
 class A
 {
   static T * instance;
 };
 
 template <class T>
 T * instance=0;
 
 Note all of the above codes are in a header file - I know this doesn't sound
 right, but on the other hand I don't have a better solution for this. This
 is not my code either.
 
 I guess the idea is that when the template class is used, the instance will
 be automatically defined. 
 
 The same gcc on Sun works for this. So I guess this might be a library
 problem for HP compatibility.
 
 Michael
 
 
 -----Original Message-----
 From: bangerth@dealii.org [mailto:bangerth@dealii.org] 
 Sent: Tuesday, December 03, 2002 6:10 PM
 To: gcc-bugs@gcc.gnu.org; gcc-prs@gcc.gnu.org; michael_gu@maxtor.com;
 mkjyg@charter.net; nobody@gcc.gnu.org
 Subject: Re: c++/7934: definition of static member for template class
 missing in obj file
 
 Synopsis: definition of static member for template class missing in obj file
 
 State-Changed-From-To: open->feedback
 State-Changed-By: bangerth
 State-Changed-When: Tue Dec  3 15:10:06 2002
 State-Changed-Why:
     Hi Michael,
     your bug report is missing a code example, so it is hard to
     tell whether the problem is with the compiler or your program. Please
 send it to us so that we can tell.
     
     However, note that a common source of problems is that
     people write code like
       template <class T> struct X {
          static int i;
       }
     Now, in order to actually get a _definition_ of the static
     member variable, you have to have a line like
       template <class T> int X<T>::i;
     in your program.
     
     Regards
       Wolfgang
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&p
 r=7934



More information about the Gcc-prs mailing list