🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.std.c++
Article #3704

Template instantiation

#3704
From: John E. Potter
Date: Sun, 17 Mar 1996 03:59
40 lines
1888 bytes
I have only found one compiler which accepts the following.  The others
attempt to instantiate class N prior to completing class L.  As I read
DWP-14.3 [temp.inst], class N<int> should not be instantiated in the
following code.  It would be instantiated when some class L<int> function
used an N<int>.

template <class T> class N;
template <class T> class L {
	public :
		// ...
	private :
		N<T>* ptr;
	};
template <class T> class N {
	private :
		N (T, const L<T>&);
		L<T> next;  // error L<int> incomplete type, size unknown
		T data;
		friend class L<T>;
	};
int main () {
	L<int> l;
	}

Do I have one correct compiler that accepts it, several correct compilers
which reject it, or (I hope not) all correct compilers because it is not
specified?

If the latter, is there any standard way to make this portable.  I can
change ptr to a void* and reinterpret_castrate everything, but that is
not very pleasing.

Thanks,
John
---
[ comp.std.c++ is moderated.  To submit articles: try just posting with      ]
[ your news-reader.  If that fails, use mailto:std-c++@ncar.ucar.edu         ]
[ FAQ:      http://reality.sgi.com/employees/austern_mti/std-c++/faq.html    ]
[ Policy:   http://reality.sgi.com/employees/austern_mti/std-c++/policy.html ]
[ Comments? mailto:std-c++-request@ncar.ucar.edu                             ]
Technical Details
Message-ID: <4if8u9$6lf@jake.esu.edu>
Path: arc1-ca.pugleaf.net!in2.uu.net!bounce-back

Show Full Headers
Complete Article Headers
From: jpotter@falcon.lhup.edu (John E. Potter)
Message-ID: <4if8u9$6lf@jake.esu.edu>
X-Original-Date: 16 Mar 1996 20:39:37 GMT
Path: arc1-ca.pugleaf.net!in2.uu.net!bounce-back
Date: 17 Mar 96 03:59:27 GMT
Approved: fjh@cs.mu.oz.au
Newsgroups: comp.std.c++
Subject: Template instantiation
Organization: East Stroudsburg University, Pennsylvania
X-Newsreader: TIN [version 1.2 PL2]
X-Auth: PGPMoose V1.1 PGP comp.std.c++
 iQBFAgUBMUuOJ+EDnX0m9pzZAQGBbAF8DlgVvdb19Rq9iOUPCDb80L0FhUFfNBMN
 VUuXwY5qS8wzv5i3GXU6UQwBavy5DTMG
 =gaDP