33 lines
560 B
C++
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
|