Scroll to navigation

std::full_extent,std::full_extent_t(3) C++ Standard Libary std::full_extent,std::full_extent_t(3)

NAME

std::full_extent,std::full_extent_t - std::full_extent,std::full_extent_t

Synopsis


Defined in header <mdspan>
struct full_extent_t { explicit full_extent_t() = default; }; (1) (since C++26)
inline constexpr std::full_extent_t full_extent {}; (2) (since C++26)


1) The class std::full_extent_t is a slice specifier type that can be used in
std::submdspan.
2) The corresponding std::full_extent instance of (1) is a slice specifier to
indicate full range of indices in the specified extent in std::submdspan.

Example

// Run this code


#include <mdspan>
#include <print>


void print_view(auto view)
{
static_assert(view.rank() <= 2);


if constexpr (view.rank() == 2)
{
for (std::size_t i = 0; i < view.extent(0); ++i)
{
for (std::size_t j = 0; j < view.extent(1); ++j)
std::print("{} ", view[i, j]);
std::println("");
}
}
else if constexpr (view.rank() == 1)
{
for (std::size_t i = 0; i < view.extent(0); ++i)
std::print("{} ", view[i]);
std::println("");
}
else
{
std::println("{}", view[]);
}
std::println("");
}


int main()
{
char letters [] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I' };
std::mdspan view (letters, 3, 3);


print_view(view);
print_view(std::submdspan(view, std::full_extent, std::full_extent));
print_view(std::submdspan(view, std::full_extent, 1));
print_view(std::submdspan(view, 1, std::full_extent));
print_view(std::submdspan(view, 2, 1));
}

Possible output:


A B C
D E F
G H I


A B C
D E F
G H I


B E H


D E F


H

See also


submdspan returns a view of a subset of an existing mdspan
(C++26) (function template)

2024.06.10 http://cppreference.com