Выбор ответа Middle Шаблоны и концепты обновлено
Вывод T при передаче по значению
Вопрос
Дано template <class T> void f(T x); и const int& r = n;. Каким будет T в вызове f(r)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: int. При передаче по значению ссылка отбрасывается, а затем и верхнеуровневый const: параметр это новая копия, константность исходника ей не нужна. - const int& получится, только если явно указать или параметр будет const T&. - const int…
Варианты ответа
intправильный ответconst int&const intint&
Разбор
При передаче по значению ссылка отбрасывается, а затем и верхнеуровневый const: параметр это новая копия, константность исходника ей не нужна.
const int&получится, только если явно указать или параметр будетconst T&.const intвывелся бы для параметраT&(g(T& x)).int&выводится для forwarding-ссылкиT&&с неконстантным lvalue.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Шаблоны и концепты»
- Дерево отрезков с операцией как параметром шаблона
- Обобщённая функция статистики для чисел и строк
- Один бинарный поиск на все случаи: предикат как параметр шаблона
- Зачем концепты
- Концепты против SFINAE
- extern template
- Fold-выражения
- Как компилируются шаблоны