привет!
возник такой теоритический вопрос: чем в данном случае являются пункты 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 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Здравствуйте, 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. Если компилятор не возражает, значит перегрузка, а если выдал ошибку, то по тексту ошибки должно быть все понятно
Здравствуйте, rg45, Вы писали:
R>Все три варианта, включая шаблонный, являются перегрузками по отношению друг к другу. Вот если ты добавишь template<> перед вариантами 2 и 3, тогда они станут специализациями.
понял, спасибо!
R>P.S. Есть простой способ проверки — меняешь тип возвращаемого значения так, чтоб он противоречил primary template declaration. Если компилятор не возражает, значит перегрузка, а если выдал ошибку, то по тексту ошибки должно быть все понятно
о! это самое важное!
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)