🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: de.comp.lang.c++
3 messages
3 total messages Started by Thomas Fritzsche Thu, 23 Nov 1995 13:17
Templates in g++?
#859
Author: Thomas Fritzsche
Date: Thu, 23 Nov 1995 13:17
7 lines
526 bytes
Hi All,

wie kann ich bei einer Template-Klasse abfragen, welcher "Typ fuer des
Template" verwendet wurde? Ist das ueberhaupt moeglich?

bye
 Thomas
Re: Templates in g++?
#861
Author: Enno Sandner
Date: Thu, 23 Nov 1995 19:55
34 lines
1683 bytes
thomas@wmaz1.uni-wuppertal.de (Thomas Fritzsche):
>wie kann ich bei einer Template-Klasse abfragen, welcher "Typ fuer des
>Template" verwendet wurde? Ist das ueberhaupt moeglich?

Ich verstehe die Frage evtl. falsch, aber ich nehme mal an Du willst 
fuer unterschiedliche Typen unterschiedliche Implementierung haben,
um zB. Builtin-Typen optimiert zu behandeln. Das laesst sich mittels 
Template-Spezialisierung erreichen. Bsp:

---
#include <iostream.h>

template<class T> struct A { void Do(); };
void A<int> :: Do() { cout << "int-impl\n"; }
void A<char> :: Do() { cout << "char-impl\n"; }
template<class T> void A<T> :: Do() { cout << "gen-impl\n"; }

int main()
{
  A<int>().Do(); A<char>().Do(); A<float>().Do();
  return 0;
}
---
Bei neueren Compilern die RTTI unterstuetzen kann man auch den 'typeid' 
Ausdruck verwenden. Bsp:

	if (typeid(T)==typeid(int)) DoThis(); else DoThat();
		
Template-Spezialisierung ist aber IMHO der bessere Weg um typspezifisches
Verhalten bei Templates zu realisieren, da die einzelnen Implementierung
sauber voneinander getrennt sind.

	Gruss
		Enno
Re: Templates in g++?
#876
Author: Harald Fuchs
Date: Fri, 24 Nov 1995 16:06
13 lines
1468 bytes
enno@inferenzsysteme.informatik.th-darmstadt.de (Enno Sandner) writes:

> Bei neueren Compilern die RTTI unterstuetzen kann man auch den 'typeid' 
> Ausdruck verwenden. Bsp:

> 	if (typeid(T)==typeid(int)) DoThis(); else DoThat();
		
> Template-Spezialisierung ist aber IMHO der bessere Weg um typspezifisches
> Verhalten bei Templates zu realisieren, da die einzelnen Implementierung
> sauber voneinander getrennt sind.

Nicht nur IMHO; das kann man gar nicht laut genug sagen: typeid ist zu
Spezialisierung das, was switch() zu virtuellen Funktionen ist.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads