(C++17) | ||||
| Sequence | ||||
(C++11) | ||||
(C++26) | ||||
(C++26) | ||||
(C++11) | ||||
| Associative | ||||
| Unordered associative | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
| Adaptors | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
| Views | ||||
(C++20) | ||||
(C++23) | ||||
| Tables | ||||
| Iterator invalidation | ||||
| Member function table | ||||
| Non-member function table |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Defined in header <mdspan> | ||
struct full_extent_t{explicit full_extent_t()=default;}; | (1) | (since C++26) |
inlineconstexpr std::full_extent_t full_extent{}; | (2) | (since C++26) |
std::full_extent_t is a slice specifier type that can be used instd::submdspan.std::full_extent instance of(1) is a slice specifier to indicate full range of indices in the specified extent instd::submdspan.#include <mdspan>#include <print> void print(auto view){ static_assert(view.rank()<=2); ifconstexpr(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();}}elseifconstexpr(view.rank()==1){for(std::size_t i=0; i!= view.extent(0);++i)std::print("{} ", view[i]);std::println();}elsestd::println("{}", view[]); std::println();} int main(){constchar letters[]{'A','B','C','D','E','F','G','H','I'};conststd::mdspan view(letters,3,3); print(view); print(std::submdspan(view, std::full_extent, std::full_extent)); print(std::submdspan(view, std::full_extent,1)); print(std::submdspan(view,1, std::full_extent)); print(std::submdspan(view,2,1));}
Possible output:
A B CD E FG H I A B CD E FG H I B E H D E F H
(C++26) | returns a view of a subset of an existingmdspan(function template)[edit] |