Namespaces
Variants

C++ named requirements: AccessorPolicy (since C++23)

From cppreference.net
C++ named requirements

AccessorPolicy 는 주어진 데이터 핸들과 인덱스를 통해 요소에 접근하는 방식을 정의합니다. 이는 std:: mdspan 에서 정책으로 사용되어 기본 1차원 인덱스를 사용한 요소 참조 접근을 명시합니다.

목차

요구사항

타입 A 가 다음을 만족하면 AccessorPolicy 를 충족합니다: copyable 개념을 모델링해야 하며, 다음 조건들이 true 여야 합니다:

**참고:** 제공된 HTML 코드에는 번역이 필요한 일반 텍스트가 포함되어 있지 않습니다. 모든 내용이 C++ 코드( 태그 내부), HTML 태그/속성, 또는 번역이 금지된 C++ 특정 용어(std::is_nothrow_move_constructible_v 등)로 구성되어 있습니다. 따라서 원본 형식이 그대로 유지되었습니다.

그리고, 다음과 같은 유형과 값이 주어졌을 때, 아래 표에 표시된 표현식들은 유효하며 표시된 의미를 갖습니다:

범례

유형 정의
A 액세스 정책 유형
OP 오프셋 정책 유형
정의
a A 타입의 (const 한정이 가능한) 값
p A::data_handle_type 타입의 (const 한정이 가능한) 값
i , j , n std:: size_t 타입의 값들

멤버 타입

유형 정의 요구 사항
A::element_type 미지정
  • 추상 클래스 유형이 아닌 완전한 객체 유형
A::data_handle_type 미지정 [1]
  • copyable 개념을 모델링
  • 다음 값들이 모두 true 여야 함:
A::reference 미지정 [2]
A::offset_policy OP
  • AccessorPolicy 의 요구 사항을 충족
  • std:: constructible_from < OP, const A & > true 여야 함
  • typename OP​ :: ​element_type typename A​ :: ​element_type 이 동일한 유형이어야 함
  1. element_type * 일 필요는 없습니다.
  2. element_type & 일 필요는 없습니다.

멤버 함수

표현식 반환 타입 의미론
a. access ( p, i ) typename A :: reference
a. offset ( p, i ) typename A :: offset_policy
:: data_handle_type
  • q b A :: offset_policy ( a ) 이고, 임의의 정수 n 에 대해 [ 0 , n ) p a 의 접근 가능 범위(아래 참조)인 경우를 만족합니다.
  • [ 0 , n - i ) q b 의 접근 가능 범위이고; 그리고
  • b. access ( q, j ) a. access ( p, i + j ) 와 동일한 요소에 대한 접근을 제공합니다. (범위 [ 0 , n - i ) 내의 모든 j 에 대해)

접근 가능 범위

인덱스 범위 [ 0 , N ) 는 주어진 데이터 핸들과 액세서에 대해 접근 가능 범위 입니다. 이는 해당 범위 내의 각 인덱스에 대해 access 멤버 함수가 유효한 요소 참조를 생성하는 경우를 의미합니다.

표준 라이브러리

다음 표준 라이브러리 타입들은 AccessorPolicy 요구사항을 충족합니다:

mdspan 요소에 대한 인덱스 기반 접근을 위한 타입
(클래스 템플릿)
mdspan 요소에 대한 정렬된 접근을 위한 타입
(클래스 템플릿)
std::linalg 네임스페이스에 정의됨
참조가 고정된 스케일링 인자와 중첩된 std::mdspan 접근자의 참조의 곱을 나타내는 std::mdspan 접근자 정책
(클래스 템플릿)
참조가 중첩된 std::mdspan 접근자의 참조의 복소 공액을 나타내는 std::mdspan 접근자 정책
(클래스 템플릿)