Выбор ответа Middle Шаблоны и концепты спрашивают часто обновлено

Зачем концепты

Вопрос

Главное преимущество концептов C++20 перед SFINAE через enable_if:

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Требования к типам видны явно, а ошибки компиляции короче. Концепт это именованный предикат над типами, который проверяется при компиляции.

Варианты ответа

  1. Требования к типам видны явно, а ошибки компиляции корочеправильный ответ
  2. Концепты проверяются во время выполнения и бросают исключение
  3. Концепты ускоряют работу программы за счёт специализации кода
  4. С концептами шаблоны можно определять в .cpp без инстанцирования

Разбор

Концепт это именованный предикат над типами, который проверяется при компиляции. Ограничения видны прямо в объявлении, ошибка сообщает, какое требование не выполнено, а перегрузка по концептам выбирает более специализированный вариант.

  • В рантайме концептов нет.
  • Скорость сгенерированного кода та же.
  • Правило про определения в заголовках остаётся.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.