33 lines
560 B
C++

#ifndef EXAMPLE20_C_H
#define EXAMPLE20_C_H
#include <cstring>
// primary template
template < typename T >
class C {
public:
bool less (const T& v1, const T& v2) {
return v1<v2;
}
};
// explicit template specialization
template<>
class C<const char*> {
public:
bool less (const char* v1, const char* v2) {
return strcmp(v1,v2)<0;
}
};
// partial specialization
template< typename T >
class C<T*> {
public:
bool less (T* v1, T* v2) {
return *v1 < *v2; }
};
#endif //EXAMPLE20_C_H