Namespaces
Variants

std::mdspan<T,Extents,LayoutPolicy,AccessorPolicy>:: mdspan

From cppreference.net
(Примечание: В данном фрагменте HTML отсутствует текстовое содержимое для перевода - присутствуют только HTML-теги и атрибуты, которые согласно инструкциям не подлежат переводу)
constexpr mdspan ( ) ;
(1) (начиная с C++23)
template < class ... OtherIndexTypes >
constexpr explicit mdspan ( data_handle_type p, OtherIndexTypes... exts ) ;
(2) (начиная с C++23)
template < class OtherIndexType, std:: size_t N >

constexpr explicit ( N ! = rank_dynamic ( ) )

mdspan ( data_handle_type p, std:: span < OtherIndexType, N > exts ) ;
(3) (начиная с C++23)
template < class OtherIndexType, std:: size_t N >

constexpr explicit ( N ! = rank_dynamic ( ) )
mdspan ( data_handle_type p,

const std:: array < OtherIndexType, N > & exts ) ;
(4) (начиная с C++23)
constexpr mdspan ( data_handle_type p, const extents_type & ext ) ;
(5) (начиная с C++23)
constexpr mdspan ( data_handle_type p, const mapping_type & m ) ;
(6) (начиная с C++23)
constexpr mdspan ( data_handle_type p, const mapping_type & m,
const accessor_type & a ) ;
(7) (начиная с C++23)
template < class OtherElementType, class OtherExtents,

class OtherLayoutPolicy, class OtherAccessor >
constexpr explicit ( /* см. ниже */ )
mdspan ( const mdspan < OtherElementType, OtherExtents,

OtherLayoutPolicy, OtherAccessor > & other ) ;
(8) (начиная с C++23)
constexpr mdspan ( const mdspan & rhs ) = default ;
(9) (начиная с C++23)
constexpr mdspan ( mdspan && rhs ) = default ;
(10) (начиная с C++23)

Создает объект mdspan , опционально используя предоставленный пользователем указатель на данные p , объект отображения размещения m и аксессор a . Если предоставлены экстенты exts или ext , они преобразуются в тип extents_type и используются для инициализации объекта отображения размещения.

Содержание

Параметры

p - указатель на базовые данные
m - отображение размещения
a - аксессор
ext - объект std::extents
exts - представляет многомерные размеры
other - другой mdspan для преобразования
rhs - другой mdspan для копирования или перемещения

Эффекты

Для элементов данных, перечисленных в таблице ниже:

  • Если соответствующий инициализатор пуст, элемент данных value-initialized .
  • Если соответствующий инициализатор не пуст, элемент данных direct-non-list-initialized с этим инициализатором.
Перегрузка Инициализатор для...
ptr_ map_ acc_
( 1 ) (пусто)
( 2 ) std :: move ( p ) extents_type
( static_cast < index_type >
( std :: move ( exts ) ) ... )
(пусто)
( 3 ) extents_type ( exts )
( 4 )
( 5 ) ext
( 6 ) m
( 7 ) a
( 8 ) other. ptr_ other. map_ other. acc_

Ограничения и дополнительная информация

1) Эта перегрузка участвует в разрешении перегрузки только если все следующие значения true :
Если [ 0 , map_  . required_span_size ( ) ) не является доступным диапазоном для ptr_ и acc_ при значениях map_ и acc_ после вызова этого конструктора, поведение не определено.
2) Эта перегрузка участвует в разрешении перегрузки только если все следующие значения true :
Если [ 0 , map_  . required_span_size ( ) ) не является доступным диапазоном для p и acc_ для значений map_ и acc_ после вызова этих конструкторов, поведение не определено.
3,4) Эти перегрузки участвуют в разрешении перегрузки только если все следующие значения true :
Если [ 0 , map_  . required_span_size ( ) ) не является доступным диапазоном для p и acc_ для значений map_ и acc_ после вызова этих конструкторов, поведение не определено.
5) Эта перегрузка участвует в разрешении перегрузки только если все следующие значения true :
Если [ 0 , map_  . required_span_size ( ) ) не является доступным диапазоном для p и acc_ для значений map_ и acc_ после вызова этих конструкторов, поведение не определено.
6) Эта перегрузка участвует в разрешении перегрузки только если std:: is_default_constructible_v < accessor_type > равно true .
Если [ 0 , m. required_span_size ( ) ) не является доступным диапазоном для p и acc_ для значения acc_ после вызова этого конструктора, поведение не определено.
7) Если [ 0 , m. required_span_size ( ) ) не является доступным диапазоном для p и a , поведение не определено.
8) Выражение внутри explicit эквивалентно ! std:: is_convertible_v < const OtherLayoutPolicy :: template mapping < OtherExtents > & ,
mapping_type >
|| ! std:: is_convertible_v < const OtherAccessor & , accessor_type >
.
Эта перегрузка участвует в разрешении перегрузки только если все следующие значения true :
Если любое из следующих значений false , программа является некорректной:
Если [ 0 , map_  . required_span_size ( ) ) не является доступным диапазоном для ptr_ и acc_ при значениях ptr_ , map_ и acc_ после вызова этого конструктора, поведение не определено.

Если static_extent ( r ) == std:: dynamic_extent
|| static_extent ( r ) == other. extent ( r )
равно false для некоторого индекса ранга r типа extents_type , поведение не определено.

(до C++26)

Если static_extent ( r ) == std:: dynamic_extent
|| static_extent ( r ) == other. extent ( r )
равно false для некоторого индекса ранга r типа extents_type :

  • Если реализация является защищённой , происходит нарушение контракта . Более того, если обработчик нарушения контракта возвращает управление при семантике оценки "observe", поведение не определено.
  • Если реализация не является защищённой, поведение не определено.
(начиная с C++26)

Пример

Ссылки

  • Стандарт C++23 (ISO/IEC 14882:2024):
  • 24.7.3.6.2 Конструкторы [mdspan.mdspan.cons]

Смотрите также