Назад к вопросам
JuniorТеорияЧасто
Что произойдёт при сборке и запуске этой программы?
#include <iostream>
template <typename T>
T max_of(T a, T b) {
return a > b ? a : b;
}
int main() {
int n = 1;
double x = 2.5;
std::cout << max_of(n, x);
}Не скомпилируется: T не может быть одновременно int и double
- Ждать
2.5: при выводе преобразования не применяются, поэтомуnдаётT=int,x—T=double, и они не совпадают. - Ждать
2: у первого аргумента нет приоритета — каждый аргумент выводитTсам, и результаты должны совпасть.
- Как изменить вызов, чтобы программа скомпилировалась и вывела
2.5? - Почему обычная функция
double max_of(double a, double b)принимает тот же вызов?