Как проверить параметр шаблона - это контейнер с фиксированной длиной n с использованием концепций?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как проверить параметр шаблона - это контейнер с фиксированной длиной n с использованием концепций?

Сообщение Anonymous »

Я хотел бы иметь концепцию, которая проверяет, является ли тип контейнера
фиксированной длины. Тип может быть массив C-стиля, std :: array , std :: span или пользовательский контейнер. Я могу проверить условия контейнера
, как показано в коде ниже, но я не могу получить его до
проверить условие длины. < /P>
template
concept fixed_container =
requires (T const& t)
{
{std::size(t)} -> std::same_as;
{std::begin(t)};
{std::end(t)};
}
// && std::declval().size() == N // Error: 'declval() must not be used!'
// && T::size() == N // Error: 'call to non-static member function without an object argument'
;

// These should all be correct
static_assert( fixed_container);
static_assert(!fixed_container);
static_assert( fixed_container);
static_assert(!fixed_container);
static_assert( fixed_container);
static_assert(!fixed_container);
< /code>
Есть идеи? requires (T const& t)
{
{std::size(t)} -> std::same_as;
{std::begin(t)};
{std::end(t)};
}
< /code>
можно заменить одной строкой < /p>
std::ranges::sized_range


Подробнее здесь: https://stackoverflow.com/questions/794 ... g-concepts
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»