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

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

Код: 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
Явная специализация шаблонной функции с использование decltype
    #39797475
Фотография mraklbrw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И в данном случае?

Код: 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
Явная специализация шаблонной функции с использование decltype
    #39797506
Фотография mraklbrw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема решена, нужно было перегрузить оператор + для Student.
...
Рейтинг: 0 / 0
Явная специализация шаблонной функции с использование decltype
    #39797669
Фотография tehKosh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
общий подход заключается вообще в том шаблоны свободных функций не специализируются, а делается перегрузка этой функции
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Явная специализация шаблонной функции с использование decltype
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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