Каст типа параметра шаблонного класса
От: Kingofastellarwar Украина  
Дата: 18.05.16 19:17
Оценка:
class A
{
};

class B : public A
{
};

template<class T> class C
{
    public:
    void Do(const T & t)
    {
    }

    template<class Pred> void Do(Pred p)
    {
    }
};



int main()
{
    C<A *> c;

    A a;
    B b;
    c.Do(&a);
    c.Do(&b); // какого вызывается шаблонный метод?

    return 0;
}
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Re: Каст типа параметра шаблонного класса
От: c-smile Канада http://terrainformatica.com
Дата: 18.05.16 20:14
Оценка:
Здравствуйте, Kingofastellarwar, Вы писали:

А что ты хочешь если &b имеет тип B* ?

Тот template method и будет best match.
Отредактировано 18.05.2016 20:14 c-smile . Предыдущая версия .
Re[2]: Каст типа параметра шаблонного класса
От: johny5 Новая Зеландия
Дата: 18.05.16 21:43
Оценка:
Здравствуйте, c-smile, Вы писали:
CS>Тот template method и будет best match.
А почему?

С первым методом компайлер должен ещё сделать дополнительное implicit conversion. А потому более общий, второй шаблон должен матчится лучше.
Где я не прав.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.