Spezialisierung einer Funktionsschablone

Wenn man eine Funktionsschablone definiert hat, aber fr eine bestimmte Kombination der Parameter eine andere Definition haben mchte, dann kann man fr diese Kombination eine spezialisierte Version des template schreiben:
// Time-stamp: "(15.11.01 16:10) spectemplatef.cpp [Klaus Wachtler (aw38)]"

#include <iostream>

using namespace std;

// prft, ob wert im Bereich [0..N-1] liegt, und
// liefert dementsprechend "ja" oder "n" zurck:
template <class T, int N> const char *pruefe( T wert )
{
  return ( T(0)<=wert && wert<N ) ? "ja" : "n";
}

// spezielle Version fr 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 )



AnyWare@Wachtler.de