Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Почему перегруженные шаблоны функций должны возвращать один и тот же тип? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не вызывается нужный конструктор базового класса http://www.cyberforum.ru/cpp-beginners/thread634211.html
Здравствуйте. Я пока в процессе изучения С++. Имеется следующая структура классов: Базовый: Person, расширяющие его: Student и Manager, и наследующий их обоих класс Employee - древо в виде...
C++ Посчитать сумму четных элементов двумерного масива посчитать сумму четных элементов двухменого массива 10*10 расположенных под главной диагональю http://www.cyberforum.ru/cpp-beginners/thread634141.html
Разбор сложной строки с аргументами C++
Здравствуйте друзья! Мне кажеться я заблудился в этой жизни(( В мою длл через пайп поступает строка, а точнее комманда на чтение или запись памяти в этой строке нужно распознать аргументы...
Argc и Argv C++
Всем привет, у меня такой вопрос, как правильно вызвать данную функцию int test(int argc, char* argv){ } Я делала так, но компилятор выдает ошибки int main(int argc, char* argv){ for( i = 1;...
C++ Компилятор не видит заголовочные файлы http://www.cyberforum.ru/cpp-beginners/thread634108.html
>Quiet Snow<, вот тут все описано :) Как сделать, чтобы он инклюды видел? Взято отсюда
C++ не получаеться привязать dll к проге не получаеться привязать dll к проге case 1001: //загрузим форму из DLL HMODULE hMod = LoadLibrary(L"lpnwf.dll"); //BOOL myRegClass(HINSTANCE hInst, int cmdMode); BOOL... подробнее

Показать сообщение отдельно
Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355

Почему перегруженные шаблоны функций должны возвращать один и тот же тип? - C++

07.08.2012, 12:56. Просмотров 1107. Ответов 12
Метки (Все метки)

Так как я еще очень плохо знаю шаблоны и никак не могу понять. Почему у всех перегруженных шаблонных функций с одинаковыми именами так же должны быть одинаковые возвращаемые значения?
Первая программа компилируется а вторая нет. Во второй программе у второго шаблона я просто изменил тип возвращаемого значения с void на int

1) компилируется
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
struct job
{
    char name[40];
    double salary;
    int floor;
};
 
template <typename T>
void my_swap(T &a, T &b)
{
    T temp = a;
    a = b;
    b = temp;
}
 
// Обменивается только содержимым полей salary и floor в структуре
template <>
void my_swap<job>(job &j1, job &j2)
{
    double s = j1.salary;
    int f = j1.floor;
 
    j1.salary = j2.salary;
    j1.floor = j2.floor;
 
    j2.salary = s;
    j2.floor = f;
}
2) а эта не компилируется
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
struct job
{
    char name[40];
    double salary;
    int floor;
};
 
template <typename T>
void my_swap(T &a, T &b)
{
    T temp = a;
    a = b;
    b = temp;
}
 
// Обменивается только содержимым полей salary и floor в структуре и возвращает целое число
template <>
int my_swap<job>(job &j1, job &j2) //error: template-id 'my_swap<job>' for 'int my_swap(job&, job&)' does not match any template declaration|
{
    double s = j1.salary;
    int f = j1.floor;
 
    j1.salary = j2.salary;
    j1.floor = j2.floor;
 
    j2.salary = s;
    j2.floor = f;
 
   return 1;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru