template<typename T>
int compare(T a, T b) {
return (a < b) ? 1 :(a > b) ? -1 : 0;
}
template<typename T>
int compare(T* a, T* b) {
return (*a < *b) ? 1 :(*a > * b) ? -1 : 0;
}
template<>
int compare<string>(string a, string b) {
return (a < b) ? 1 : (a > b) ? -1 : 0;
}
int main(){
int a = 3;
int b = 4;
compare("Hello", "World"); //1
compare(&a, &b); //2
}
Проблема: функция int Сравнить (T * a, T * b) вызывает первый и второй регистр;
DOD: вызвать функцию int сравнить (строка a, строка b) для первый регистр;