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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Не вызывается нужный конструктор базового класса http://www.cyberforum.ru/cpp-beginners/thread634211.html
Здравствуйте. Я пока в процессе изучения С++. Имеется следующая структура классов: Базовый: Person, расширяющие его: Student и Manager, и наследующий их обоих класс Employee - древо в виде ромба :) Вот собственно код: #include <iostream>
C++ Посчитать сумму четных элементов двумерного масива посчитать сумму четных элементов двухменого массива 10*10 расположенных под главной диагональю http://www.cyberforum.ru/cpp-beginners/thread634141.html
Разбор сложной строки с аргументами C++
Здравствуйте друзья! Мне кажеться я заблудился в этой жизни(( В мою длл через пайп поступает строка, а точнее комманда на чтение или запись памяти в этой строке нужно распознать аргументы указывающие на адресс ячейки памяти которую нужно прочитать/или записать, аргументы разделены знаком # 1 аргумент строки означает чтение или запись 2 аргумент адресс ячейки
Argc и Argv C++
Всем привет, у меня такой вопрос, как правильно вызвать данную функцию int test(int argc, char* argv){ } Я делала так, но компилятор выдает ошибки int main(int argc, char* argv){ for( i = 1; i<argc; i++) test(1, argv = "-n 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 (*myRegClass)(HINSTANCE, int); подробнее

Показать сообщение отдельно
Intel~lect
 Аватар для Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
07.08.2012, 12:56     Почему перегруженные шаблоны функций должны возвращать один и тот же тип?
Так как я еще очень плохо знаю шаблоны и никак не могу понять. Почему у всех перегруженных шаблонных функций с одинаковыми именами так же должны быть одинаковые возвращаемые значения?
Первая программа компилируется а вторая нет. Во второй программе у второго шаблона я просто изменил тип возвращаемого значения с 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru