std::meta::reflect_constant_array
| 헤더 <meta>
|
||
template< ranges::input_range R >
consteval std::meta::info reflect_constant_array( R&& r );
|
(C++26부터)에 정의됨 | |
요소가 r의 대응 요소인 배열 객체를 나타내는 리플렉션을 반환합니다.
결과 객체는 템플릿 매개변수 객체입니다. 정적 저장 기간을 가지며, 템플릿 인수와 동등한 내용을 갖는 범위는 동일한 객체에 해당합니다.
r의 크기가 0이 아닌 경우, 결과 배열 객체는 잠재적으로 유일하지 않은 객체입니다.
U를 ranges::range_value_t<R>이라 하고 T를 std::remove_all_extents_t<U>라고 합시다.
다음 중 하나라도 참이면 프로그램의 형식이 잘못되었습니다:
T가 구조적 타입이 아님.T가 copy_constructible을 만족하지 않음.U가 배열 타입이 아니고std::is_constructible_v<T, ranges::range_reference_t<R>>가 거짓임.
매개변수
| r | - | input_range |
반환값
r의 크기가 0이 아닌 경우, 타입 (여기서 는 const T[N]의 크기)의 N템플릿 매개변수 객체r를 나타내는 리플렉션입니다. 템플릿 매개변수 객체의 각 요소는 다음에 템플릿 인수와 동등합니다:
std::meta::reflect_constant_array(*it)만약U가 배열 타입이면;std::meta::reflect_constant(static_cast<T>(*it))그렇지 않으면;
여기서 it는 r의 대응 요소에 대한 반복자입니다.
그렇지 않은 경우 (r의 크기가 0), const std::array<T, 0> 타입의 템플릿 매개변수 객체가 {}로 초기화된 것을 나타내는 리플렉션입니다.
예외
다음에 의해 발생된 모든 예외를 던집니다:
r또는r의 반복자 또는 센티널에 대한 연산;- 위에서 설명한
std::meta::reflect_constant의 인수 또는std::meta::reflect_constant_array의 호출.
std::meta::exception을 던집니다, 만약 std::meta::reflect_constant의 호출이 예외를 통해 종료된다면.
참고
std::meta::reflect_constant_array의 결과는 std::meta::substitute와 함께 사용하기에 적합합니다. 호출자가 리플렉션 값 대신 정적 배열의 std::span을 원하는 경우, std::define_static_array가 일반적으로 더 적합합니다.
예제
| 이 섹션은 불완전합니다 이유: 예제 없음 |
참조
(C++26) |
컴파일 시간 배열을 정적 저장소로 승격하여 정적 배열의 스팬을 반환합니다 (함수 템플릿) |
(C++26) |
컴파일 시간 문자열을 정적 저장소로 승격하여 정적 문자열을 나타내는 리플렉션을 반환합니다 (함수 템플릿) |
(C++26) |
값 또는 템플릿 매개변수 객체를 나타내는 리플렉션을 반환하며, 상수 템플릿 인수로 사용하기에 적합합니다 (함수 템플릿) |