перегрузка или специализация?
От: niXman Ниоткуда https://github.com/niXman
Дата: 06.05.20 08:18
Оценка:
привет!

возник такой теоритический вопрос: чем в данном случае являются пункты 2 и 3, и является ли 3 перегрузкой 2?
template<typename T>
T sum(const T *beg, const T *end); // 1

int sum(const int *beg, const int *end); // 2

double sum(const double *beg, const double *end); // 3



спасибо!
Слово "совпадение" появилось после падения сов.
Re: перегрузка или специализация?
От: rg45 СССР  
Дата: 06.05.20 08:39
Оценка: 11 (3) +3
Здравствуйте, niXman, Вы писали:

X>привет!


X>возник такой теоритический вопрос: чем в данном случае являются пункты 2 и 3, и является ли 3 перегрузкой 2?

X>
X>template<typename T>
X>T sum(const T *beg, const T *end); // 1

X>int sum(const int *beg, const int *end); // 2

X>double sum(const double *beg, const double *end); // 3
X>



Все три варианта, включая шаблонный, являются перегрузками по отношению друг к другу. Вот если ты добавишь template<> перед вариантами 2 и 3, тогда они станут специализациями.

P.S. Есть простой способ проверки — меняешь тип возвращаемого значения так, чтоб он противоречил primary template declaration. Если компилятор не возражает, значит перегрузка, а если выдал ошибку, то по тексту ошибки должно быть все понятно
--
Соседи приходят — им слышится стук копыт
Отредактировано 06.05.2020 8:44 rg45 . Предыдущая версия . Еще …
Отредактировано 06.05.2020 8:41 rg45 . Предыдущая версия .
Re[2]: перегрузка или специализация?
От: niXman Ниоткуда https://github.com/niXman
Дата: 06.05.20 08:52
Оценка:
Здравствуйте, rg45, Вы писали:

R>Все три варианта, включая шаблонный, являются перегрузками по отношению друг к другу. Вот если ты добавишь template<> перед вариантами 2 и 3, тогда они станут специализациями.


понял, спасибо!


R>P.S. Есть простой способ проверки — меняешь тип возвращаемого значения так, чтоб он противоречил primary template declaration. Если компилятор не возражает, значит перегрузка, а если выдал ошибку, то по тексту ошибки должно быть все понятно


о! это самое важное!
Слово "совпадение" появилось после падения сов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.