Шаблонные функции, непонятно...
От: Vamp Россия  
Дата: 17.07.03 10:36
Оценка:
Читал Страуструпа, много думал, но не все понял.
Явная специализация нужна для задания поведения шаблонной функции специфичного для переданных параметров, так? Причем функция выводится по параметрам.
Допустим, я хочу написать шаблонную функцию сравнения и реализовать две специализации. Одну принимающие сами объекты, а другую — указатели на объекты.
То есть, идея такая:


template<class T> bool cmp(T a, T b) {
    cout << "General template function called" << endl;
        return  (a<b);

}

template<class T> bool cmp(const T* a, const T* b) {
    cout << "Pointer template function called" << endl;
        return (*a<*b);
}

int j=5, i=7;
cmp(g, j);
cmp(&g, &j);




Разумеется, ничего не выходит — оба раза вызывается первая функция. Как-то можно вызвать требуемую? Или я вообще ничего не понял вовсе?
Спасибо.
Да здравствует мыло душистое и веревка пушистая.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.