Listing 2: Specializing a template


// general template
template <class T> struct range {
  typedef T rangeT;

  static rangeT min();
  static rangeT max();
};

// specialization for int
struct range<int> {
  typedef int rangeT;

  static rangeT min()
     {
     return numeric_limits<int>::min();
     }
  static rangeT max()
     {
     return numeric_limits<int>::max();
     }
};

// specialization for const char *
struct range<const char *> {
  typedef const char *rangeT;

  static rangeT min() { return ""; }
  static rangeT max() { return "zzzzzz"; }
};
// End of File