Выбор ответа Junior Шаблоны и концепты обновлено
Вывод аргументов шаблона класса
Вопрос
Какой тип у p в std::pair p(1, 2.5); (C++17)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: std::pair<int, double. С C++17 работает CTAD (class template argument deduction): аргументы шаблона выводятся из аргументов конструктора.
Варианты ответа
std::pair<double, double>- Ошибка компиляции: нужно указать аргументы шаблона
std::pair<int, double>правильный ответstd::pair<int, int>
Разбор
С C++17 работает CTAD (class template argument deduction): аргументы шаблона выводятся из аргументов конструктора. 1 это int, 2.5 это double.
- Приведения к общему типу нет.
- Указывать типы явно с C++17 не обязательно.
2.5не обрезается до int.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.