www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2001/12/03/09:20:20

X-Authentication-Warning: delorie.com: mailnull set sender to djgpp-bounces using -f
From: "Randy Maddox" <rmaddox AT isicns DOT com>
To: <dj AT delorie DOT com>, <djgpp AT delorie DOT com>
Subject: FW: Problem with template member of template class
Date: Mon, 3 Dec 2001 09:15:07 -0500
Message-ID: <001201c17c04$e94ee620$3502a8c0@nancy>
MIME-Version: 1.0
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2911.0)
Importance: Normal
X-MS-TNEF-Correlator: 000000009C48F545F726D442AB16EBB632D02A0DE4212000
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6700
Reply-To: djgpp AT delorie DOT com

This is a multi-part message in MIME format.

------=_NextPart_000_0013_01C17BDB.0078DE20
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

Hello,

Maybe I'm jumping the gun here by following up so soon, but you guys got
back to me so quickly on a couple of other issues that I thought this one
might have gotten lost, either that or maybe I really stumped you with this
one?  Or maybe the question was just to stupid for a response?  :-)  I hope
not!

>  -----Original Message-----
> From: 	Randy Maddox [mailto:rmaddox AT isicns DOT com] 
> Sent:	Wednesday, November 28, 2001 9:17 AM
> To:	djgpp AT delorie DOT com
> Cc:	Randy Maddox
> Subject:	Problem with template member of template class
> 
> Hello,
> 
> I am using the WinDoze 2K version of DJGPP as found in the zip archive
> djdev204_alpha_win2k.zip and have encountered an issue compiling a
> template member of a template class.  This works fine only so long as the
> template member is both declared and defined in the class declarations.
> However, as soon as I try to define the template member outside of the
> class declarations I get a compile error.  For example:
> 
> - This compiles fine and works as expected:
> 
> // test driver for template class template member
> 
> #include <iostream>
> 
> template <typename T1> class Test
> {
> public:
> 
>   Test(const T1 & privateValue)
>     : privateValue_(privateValue)
>   { }
> 
>   template <typename T2>
>   void Write(const T2 & value)
>   {
>     std::cout << "Write() value is:  " << value << std::endl;
>     std::cout << "privateValue is:   " << privateValue_ << std::endl
>               << std::endl;
>   }
> 
> private:
> 
>   const T1    privateValue_;
> };
> 
> int main()
> {
>   std::cout << "Start of test driver" << std::endl << std::endl;
> 
>   Test<double>    test(3.3);
> 
>   test.Write("string value");
> 
>   test.Write(4);
> 
>   std::cout << std::endl << "End of test driver" << std::endl;
> }
> 
> // end of this file
> 
> 
> However, if I try to move the definition of Write() outside of the class
> declarations as shown here:
> 
> // test driver for template class template member
> 
> #include <iostream>
> 
> template <typename T1> class Test
> {
> public:
> 
>   Test(const T1 & privateValue)
>     : privateValue_(privateValue)
>   { }
> 
>   template <typename T2>
>   void Write(const T2 & value);
> 
> private:
> 
>   const T1    privateValue_;
> };
> 
> 
> template <typename T1>
> template <typename T2>
> void Test<T1>::Write<T2>(const T2 & value)
> {
>   std::cout << "Write() value is:  " << value << std::endl;
>   std::cout << "privateValue is:   " << privateValue_ << std::endl
>             << std::endl;
> }
> 
> 
> int main()
> {
>   std::cout << "Start of test driver" << std::endl << std::endl;
> 
>   Test<double>    test(3.3);
> 
>   test.Write("string value");
> 
>   test.Write(4);
> 
>   std::cout << std::endl << "End of test driver" << std::endl;
> }
> 
> // end of this file
> 
> 
> Then I get the following compile error:
> 
> >gxx test2.cpp
> test2.cpp:25: partial specialization `Write<T2>' of function template
> 
> Since, as far as I can tell from the Standard, this looks like the correct
> syntax why do I get this error?  Is this a bug?  An unsupported feature?
> Or do I just not actually understand the syntax?
> 
> Using gxx -v reports the following:
> 
> >gxx -v
> Reading specs from C:/djgpp/bin/../lib/gcc-lib/djgpp/3.02/specs
> Configured with: ../configure i586-pc-msdosdjgpp --prefix=/dev/env/DJDIR
> --disable-nls
> Thread model: single
> gcc version 3.0.2
>  C:/djgpp/bin/../lib/gcc-lib/djgpp/3.02/collect2.exe c:/djgpp/lib/crt0.o
> -LC:/djgpp/bin/../lib/
> gcc-lib/djgpp/3.02 -LC:/djgpp/bin/../lib/gcc-lib -Lc:/djgpp/lib
> -Lc:/djgpp/lib/gcc-lib/djgpp/3.
> 02 -Lc:/djgpp/bin -Lc:/djgpp/lib
> -LC:/djgpp/bin/../lib/gcc-lib/djgpp/3.02/../../.. -Lc:/djgpp/l
> ib/gcc-lib/djgpp/3.02/../../.. -lstdcxx -lm -lgcc -lc -lgcc -Tdjgpp-x.djl
> 
> Thanks.
> 
> Randy Maddox
> C++ Author, Architect, Developer
> 703-883-8088 ext. 119 (8 am to 4:30 pm Eastern USA time)
> rmaddox AT isicns DOT com
> 

------=_NextPart_000_0013_01C17BDB.0078DE20
Content-Type: application/ms-tnef;
	name="winmail.dat"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="winmail.dat"

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
AADAAAAAAAAARgAAAACChQAAAQAAAAsAEYAIIAYAAAAAAMAAAAAAAABGAAAAAAaFAAAAAAAAAwAS
gAggBgAAAAAAwAAAAAAAAEYAAAAAAYUAAAAAAAALABuACCAGAAAAAADAAAAAAAAARgAAAAAOhQAA
AAAAAAMAHIAIIAYAAAAAAMAAAAAAAABGAAAAABGFAAAAAAAAAwAegAggBgAAAAAAwAAAAAAAAEYA
AAAAGIUAAAAAAAACAfgPAQAAABAAAACcSPVF9ybUQqsW67Yy0CoNAgH6DwEAAAAQAAAAnEj1Rfcm
1EKrFuu2MtAqDQIB+w8BAAAAowAAAAAAAAA4obsQBeUQGqG7CAArKlbCAABQU1RQUlguRExMAAAA
AAAAAABOSVRB+b+4AQCqADfZbgAAAEM6XERvY3VtZW50cyBhbmQgU2V0dGluZ3NcUmFuZHlNLk5B
VklHQVRJT05cTG9jYWwgU2V0dGluZ3NcQXBwbGljYXRpb24gRGF0YVxNaWNyb3NvZnRcT3V0bG9v
a1xtYWlsYm94LnBzdAAAAwD+DwUAAAADAA00/TcAAAIBfwABAAAAMQAAADAwMDAwMDAwOUM0OEY1
NDVGNzI2RDQ0MkFCMTZFQkI2MzJEMDJBMERFNDIxMjAwMAAAAAADAAYQxuiwhAMABxA8CwAAAwAQ
EAAAAAADABEQAQAAAB4ACBABAAAAZQAAAEhFTExPLE1BWUJFSU1KVU1QSU5HVEhFR1VOSEVSRUJZ
Rk9MTE9XSU5HVVBTT1NPT04sQlVUWU9VR1VZU0dPVEJBQ0tUT01FU09RVUlDS0xZT05BQ09VUExF
T0ZPVEhFUklTU1UAAAAAe9U=

------=_NextPart_000_0013_01C17BDB.0078DE20--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019