std::ranges::view_interface<D>:: size
|
constexpr
auto
size
(
)
requires
ranges::
forward_range
<
D
>
&&
std::
sized_sentinel_for
<
ranges::
sentinel_t
<
D
>
,
|
(1) | (начиная с C++20) |
|
constexpr
auto
size
(
)
const
requires
ranges::
forward_range
<
const
D
>
&&
std::
sized_sentinel_for
<
ranges::
sentinel_t
<
const
D
>
,
|
(2) | (начиная с C++20) |
Реализация по умолчанию функции-члена
size()
получает размер диапазона путём вычисления разницы между стражем и начальным итератором.
Содержание |
Возвращаемое значение
to-unsigned-like
(
ranges::
end
(
static_cast
<
D
&
>
(
this
)
)
-
ranges::
begin
(
static_cast
<
D
&
>
(
this
)
)
)
.
to-unsigned-like
(
ranges::
end
(
static_cast
<
const
D
&
>
(
this
)
)
-
ranges::
begin
(
static_cast
<
const
D
&
>
(
this
)
)
)
.
Примечания
Следующие производные типы могут использовать реализацию по умолчанию для
size()
:
Следующие типы наследуются от
std::ranges::view_interface
и не объявляют собственную функцию-член
size()
, но они не могут использовать реализацию по умолчанию, поскольку их типы итераторов и стражей никогда не удовлетворяют требованиям
sized_sentinel_for
:
- std::ranges::basic_istream_view
- std::ranges::filter_view
- std::ranges::join_view
- std::ranges::lazy_split_view
- std::ranges::split_view
- std::ranges::take_while_view
Отчёты о дефектах
Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3646 | C++20 |
the default implementations of
size
functions returned a signed type
|
they return unsigned type |
Смотрите также
|
(C++17)
(C++20)
|
возвращает размер контейнера или массива
(шаблон функции) |
|
(C++20)
|
возвращает целое число, равное размеру диапазона
(объект точки кастомизации) |
|
(C++20)
|
возвращает знаковое целое число, равное размеру диапазона
(объект точки кастомизации) |