Thread View: de.comp.lang.c++
3 messages
3 total messages
Started by Thomas Fritzsche
Thu, 23 Nov 1995 13:17
Templates in g++?
Author: Thomas Fritzsche
Date: Thu, 23 Nov 1995 13:17
Date: Thu, 23 Nov 1995 13:17
7 lines
526 bytes
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++?
Author: Enno Sandner
Date: Thu, 23 Nov 1995 19:55
Date: Thu, 23 Nov 1995 19:55
34 lines
1683 bytes
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++?
Author: Harald Fuchs
Date: Fri, 24 Nov 1995 16:06
Date: Fri, 24 Nov 1995 16:06
13 lines
1468 bytes
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