Карточка Middle Шаблоны и концепты обновлено
requires-выражение
Вопрос
Как потребовать, чтобы у типа был метод size(), возвращающий что-то приводимое к std::size_t?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
template <class T concept Sized = requires(const T& c) { { c.size() } - std::convertibleto<std::sizet; }; и затем template <Sized T void f(const T&); или requires Sized<T после списка параметров шаблона.
Ответ
template <class T> concept Sized = requires(const T& c) { { c.size() } -> std::convertible_to<std::size_t>; }; и затем template <Sized T> void f(const T&); или requires Sized<T> после списка параметров шаблона.
Разбор
template <class T> concept Sized = requires(const T& c) { { c.size() } -> std::convertible_to<std::size_t>; }; и затем template <Sized T> void f(const T&); или requires Sized<T> после списка параметров шаблона.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Шаблоны и концепты»
- Дерево отрезков с операцией как параметром шаблона
- Обобщённая функция статистики для чисел и строк
- Один бинарный поиск на все случаи: предикат как параметр шаблона
- Зачем концепты
- Концепты против SFINAE
- Вывод аргументов шаблона класса
- Вывод T при передаче по значению
- Член зависимой базы