Namespaces
Variants

std:: dynamic_extent

From cppreference.net
헤더 파일에 정의됨 <span>
inline constexpr std:: size_t dynamic_extent = std:: numeric_limits < std:: size_t > :: max ( ) ;
(C++20부터)

std::dynamic_extent std::size_t 타입의 상수로, 일반적으로 std::dynamic_extent 를 사용하는 모든 타입이 해당 값(예: 크기)을 타입에서 정적으로 알 수 있는 것이 아니라 동적으로 저장함을 나타내는 데 사용됩니다.

여러 상황에서 사용되고 있습니다:

  • 정적 범위와 동적 범위의 std::span 을 구분하기 위해.
  • 특정 랭크 인덱스에서의 익스텐트가 std::extents 에 동적으로 저장될 것임을 나타냅니다.
(C++23부터)
  • std::mdspan 의 패딩 레이아웃이 패딩 값을 동적으로 저장함을 나타내기 위해.
(since C++26)

참고

std::size_t 는 부호 없는 타입이므로, 동등한 정의는 다음과 같습니다:

inline constexpr std::size_t dynamic_extent = -1;

다음을 참조하십시오: integral conversions .

예제

#include <array>
#include <cassert>
#include <cstddef>
#include <iostream>
#include <span>
#include <string_view>
#include <vector>
int main()
{
    auto print = [](std::string_view const name, std::size_t ex)
    {
        std::cout << name << ", ";
        if (std::dynamic_extent == ex)
            std::cout << "dynamic extent\n";
        else
            std::cout << "static extent = " << ex << '\n';
    };
    int a[]{1, 2, 3, 4, 5};
    std::span span1{a};
    print("span1", span1.extent);
    std::span<int, std::dynamic_extent> span2{a};
    print("span2", span2.extent);
    std::array ar{1, 2, 3, 4, 5};
    std::span span3{ar};
    print("span3", span3.extent);
    std::vector v{1, 2, 3, 4, 5};
    std::span span4{v};
    print("span4", span4.extent);
}

출력:

span1, static extent = 5
span2, dynamic extent
span3, static extent = 5
span4, dynamic extent

참고 항목

(C++20)
객체들의 연속적인 시퀀스에 대한 비소유 뷰
(클래스 템플릿)
(C++23)
특정 랭크의 다차원 인덱스 공간에 대한 기술자
(클래스 템플릿)