Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Явная специализация шаблонной функции с использование decltype / 4 сообщений из 4, страница 1 из 1
05.04.2019, 17:00
    #39797453
mraklbrw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Явная специализация шаблонной функции с использование decltype
Добрый день. Есть вопрос - в чём проблема во втором случае?

Данный код компилируется:

Код: plaintext
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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;

struct Coord
{
	double X, Y;

	Coord(double x, double y)
	{
		X = x; Y = y;
	}

	void Print()
	{
		cout << "X: " << X << "\tY: " << Y << endl;
	}
};

template<typename T>
T CalcSum (T num1, T num2)
{
	return num1 + num2;
}

template <>
Coord CalcSum<Coord>(Coord c1, Coord c2)
{
	return Coord(c1.X + c2.X, c1.Y + c2.Y);
}


int main()
{
	int a = 5, b = 7;
	cout << CalcSum(a, b) << endl;
	double c = 3.2, d = 5.4;
	cout << CalcSum(a, b) << endl;
	Coord c1 (2, 5.2);
	Coord c2 (7, 5.4);
	CalcSum(c1, c2).Print();



	cin.get();
	cin.get();
}




А данный нет:

Код: plaintext
1.
2.
3.
4.
5.
template <>
Coord CalcSum<Coord>(Coord c1, Coord c2)
{
	return Coord(c1.X + c2.X, c1.Y + c2.Y);
}




Отсутствуют экземпляры шаблон функции CalcSum, сответствующие заданному типу.
...
Рейтинг: 0 / 0
05.04.2019, 17:39
    #39797475
mraklbrw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Явная специализация шаблонной функции с использование decltype
И в данном случае?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
template<typename T>
auto CalcSum(T num1, T num2) -> decltype (num1 + num2)
{
	return num1 + num2;
}

template<>
Coord CalcSum<Coord>(Coord c1, Coord c2)
{
	return Coord(c1.X + c2.X, c1.Y + c2.Y);
}
...
Рейтинг: 0 / 0
05.04.2019, 18:41
    #39797506
mraklbrw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Явная специализация шаблонной функции с использование decltype
Проблема решена, нужно было перегрузить оператор + для Student.
...
Рейтинг: 0 / 0
06.04.2019, 18:10
    #39797669
tehKosh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Явная специализация шаблонной функции с использование decltype
общий подход заключается вообще в том шаблоны свободных функций не специализируются, а делается перегрузка этой функции
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Явная специализация шаблонной функции с использование decltype / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]