// Time-stamp: "(15.11.01 16:10) spectemplatef.cpp [Klaus Wachtler (aw38)]"
#include <iostream>
using namespace std;
// prüft, ob wert im Bereich [0..N-1] liegt, und
// liefert dementsprechend "ja" oder "nö" zurück:
template <class T, int N> const char *pruefe( T wert )
{
return ( T(0)<=wert && wert<N ) ? "ja" : "nö";
}
// spezielle Version für T==unsigned und N==10:
template<> const char *pruefe<unsigned,10>( unsigned wert )
{
return ( wert<10 ) ? "jau" : "nö";
}
int main( int nargs, char **args )
{
// Aufruf der allgemeinen (generischen) Funktion:
cout << pruefe<int,10>( 5 ) << endl; // 5<10 "ja"
cout << pruefe<int,10>( 15 ) << endl; // 15<10 "nö"
cout << pruefe<double,60>( 50.0 ) << endl; // 50.0<60.0 "ja"
// Aufruf der speziellen Version:
cout << pruefe<unsigned,10>( 5u ) << endl; // 5u<10u "jau"
} // main( int nargs, char **args )