перегрузка или специализация?
От: 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



спасибо!
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
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. Если компилятор не возражает, значит перегрузка, а если выдал ошибку, то по тексту ошибки должно быть все понятно


о! это самое важное!
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.