Выбор ответа Middle Шаблоны и концепты обновлено
Что такое SFINAE
Вопрос
Что означает SFINAE?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Неудачная подстановка в сигнатуру исключает кандидата, это не ошибка. Substitution Failure Is Not An Error касается только «непосредственного контекста» подстановки: типы параметров, возвращаемого значения, аргументы шаблона по умолчанию.
Варианты ответа
- Любая ошибка в теле шаблона игнорируется, а функция становится пустой
- Неудачная подстановка в сигнатуру исключает кандидата, это не ошибкаправильный ответ
- Шаблоны с ошибками компилируются, но падают в рантайме при вызове
- Правило, по которому нешаблонная функция выбирается перед шаблонной
Разбор
Substitution Failure Is Not An Error касается только «непосредственного контекста» подстановки: типы параметров, возвращаемого значения, аргументы шаблона по умолчанию. На этом работает std::enable_if.
- Ошибка в теле функции после выбора перегрузки это настоящая ошибка компиляции.
- SFINAE работает целиком при компиляции.
- Предпочтение нешаблонной функции это отдельное правило разрешения перегрузки.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Шаблоны и концепты»
- Дерево отрезков с операцией как параметром шаблона
- Обобщённая функция статистики для чисел и строк
- Один бинарный поиск на все случаи: предикат как параметр шаблона
- Зачем концепты
- Концепты против SFINAE
- Вывод аргументов шаблона класса
- Вывод T при передаче по значению
- Член зависимой базы