const char* min(const char* a, const char* b) { return (strcmp(a, b) < 0) ? a : b; }
//: C05:MinTest2.cpp #include <cstring> #include <iostream> using std::strcmp; using std::cout; using std::endl; template<class T> const T& min(const T& a, const T& b) { return (a < b) ? a : b; } // An explicit specialization of the min template template<> const char* const& min<const char*>(const char* const& a, const char* const& b) { return (strcmp(a, b) < 0) ? a : b; } int main() { const char *s2 = "say \"Ni-!\"", *s1 = "knights who"; cout << min(s1, s2) << endl; cout << min<>(s1, s2) << endl; } ///:~
Listado 6.27. C05/MinTest2.cpp
template<class T, class Allocator = allocator<T> > class vector {...};
template<> class vector<bool, allocator<bool> > {...};