| 
| class   | fub::ExtentsStorage_< Rank, 0, StaticExtents... > | 
|   | This is the class template specialisation if all extents are statically known.  More...
  | 
|   | 
| class   | fub::ExtentsStorage_< Rank, Rank, StaticExtents... > | 
|   | 
| class   | fub::ExtentsStorage_< Rank, RankDynamic, StaticExtents > | 
|   | This is the storage type for the extents class and only takes storage for dynamic extents.  More...
  | 
|   | 
| class   | fub::extents< StaticExtents > | 
|   | An extents object defines a multidimensional index space which is the Cartesian product of integers extents [0..N0) * [0..N1) * ...  More...
  | 
|   | 
| struct   | fub::is_extents< E > | 
|   | This is true std::true_type iff E is extents<Es...> for some std::ptrdiff_t...  More...
  | 
|   | 
| struct   | fub::is_extents< extents< StaticExtents... > > | 
|   | 
| struct   | fub::layout_left | 
|   | This layout creates mappings which do row first indexing (as in Fortran).  More...
  | 
|   | 
| class   | fub::layout_left::mapping< Extents > | 
|   | This mapping does row first indexing (as in Fortran).  More...
  | 
|   | 
| struct   | fub::layout_right | 
|   | 
| class   | fub::layout_right::mapping< Extents > | 
|   | 
| struct   | fub::layout_stride | 
|   | 
| class   | fub::layout_stride::mapping< Extents > | 
|   | 
| struct   | fub::accessor_basic< ElementType > | 
|   | 
| class   | fub::basic_mdspan< ElementType, Extents, LayoutPolicy, AccessorPolicy > | 
|   | 
| struct   | fub::dynamic_extents_< integer_sequence< I, Is... > > | 
|   | 
| struct   | fub::all_type | 
|   | 
| struct   | fub::mdspan_subspan< ElementType, Extents, LayoutPolicy, AccessorPolicy, SliceSpecifiers > | 
|   | 
| struct   | fub::is_mdspan< typename > | 
|   | 
| struct   | fub::is_mdspan< basic_mdspan< T, E, L, A > > | 
|   | 
 | 
| template<typename T , ptrdiff_t... Extents>  | 
| using  | fub::static_mdspan = basic_mdspan< T, extents< Extents... > > | 
|   | 
| template<std::size_t Rank>  | 
| using  | fub::dynamic_extents = typename dynamic_extents_< make_index_sequence< Rank > >::type | 
|   | 
| template<typename T , std::size_t Rank, typename Layout  = layout_left>  | 
| using  | fub::mdspan = basic_mdspan< T, dynamic_extents< Rank >, Layout > | 
|   | 
| template<typename T , typename E , typename A  = accessor_basic<T>>  | 
| using  | fub::strided_mdspan = basic_mdspan< T, E, layout_stride, A > | 
|   | 
| template<class ElementType , class Extents , class LayoutPolicy , class AccessorPolicy , class... SliceSpecifiers>  | 
| using  | fub::mdspan_subspan_t = typename mdspan_subspan< ElementType, Extents, LayoutPolicy, AccessorPolicy, SliceSpecifiers... >::type | 
|   | 
 | 
| template<typename... IndexType>  | 
| constexpr std::size_t  | fub::count_dynamic_extents (IndexType... extent) noexcept | 
|   | 
| template<std::ptrdiff_t... StaticExtentsL, std::ptrdiff_t... StaticExtentsR>  | 
| constexpr bool  | fub::operator== (const extents< StaticExtentsL... > &lhs, const extents< StaticExtentsR... > &rhs) noexcept | 
|   | Returns: true if lhs.rank() == rhs.rank() and lhs.extents(r) == rhs.extents(r) for all r in the range [0, lhs.rank()), or false otherwise.  More...
  | 
|   | 
| template<std::ptrdiff_t... StaticExtentsL, std::ptrdiff_t... StaticExtentsR>  | 
| constexpr bool  | fub::operator!= (const extents< StaticExtentsL... > &left, const extents< StaticExtentsR... > &right) noexcept | 
|   | 
| template<std::ptrdiff_t... StaticExtents>  | 
| constexpr std::ptrdiff_t  | fub::Size_ (const extents< StaticExtents... > e) noexcept | 
|   | 
| constexpr std::ptrdiff_t  | fub::SliceExtent_ (const std::pair< std::ptrdiff_t, std::ptrdiff_t > &p) | 
|   | 
| template<class ElementType , class Extents , class LayoutPolicy , class AccessorPolicy , class... SliceSpecifiers>  | 
| mdspan_subspan_t< ElementType, Extents, LayoutPolicy, AccessorPolicy, SliceSpecifiers... >  | fub::subspan (const basic_mdspan< ElementType, Extents, LayoutPolicy, AccessorPolicy > &src, SliceSpecifiers... slices) noexcept | 
|   |