Карточка 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 ошибок.