35 lines
676 B
C++
35 lines
676 B
C++
#include <iostream>
|
|
#include <cstring>
|
|
|
|
// primary template
|
|
template < typename T >
|
|
bool less ( T v1, T v2 ) {
|
|
return v1 < v2;
|
|
}
|
|
/*
|
|
// explicit template specialization
|
|
template<>
|
|
bool less<const char*> (const char* v1, const char* v2) {
|
|
//bool less (const char* v1, const char* v2) {
|
|
return strcmp(v1,v2)<0;
|
|
}
|
|
*/
|
|
/*
|
|
// partial specialization
|
|
template< typename T>
|
|
bool less<T*> (T* v1, T* v2){
|
|
return *v1 < *v2;
|
|
}
|
|
*/
|
|
int main() {
|
|
int i1=1;
|
|
int i2=2;
|
|
|
|
bool l1 = less(i1,i2);
|
|
bool l2 = less(1.2,3.4);
|
|
bool l3 = less("abcd","abcx");
|
|
bool l4 = less(&i1, &i2);
|
|
std::cout << l1 << " " << l2 << " " << l3 << " " << l4 << std::endl;
|
|
return 0;
|
|
}
|