dune-common  2.11
Classes | Namespaces
mdspan.hh File Reference
#include <array>
#include <span>
#include <type_traits>
#include <utility>
#include <dune/common/indices.hh>
#include <dune/common/std/default_accessor.hh>
#include <dune/common/std/extents.hh>
#include <dune/common/std/layout_right.hh>
#include <dune/common/std/no_unique_address.hh>

Go to the source code of this file.

Classes

class  Dune::Std::mdspan< Element, Extents, LayoutPolicy, AccessorPolicy >
 A multi-dimensional non-owning array view. More...
 

Namespaces

 Dune::Std
 Namespace for features backported from new C++ standards.
 

Functions

template<class CArray , std::enable_if_t< std::is_array_v< CArray >, int > = 0, std::enable_if_t<(std::rank_v< CArray >==1), int > = 0>
 Dune::Std::mdspan (CArray &) -> mdspan< std::remove_all_extents_t< CArray >, Std::extents< std::size_t, std::extent_v< CArray, 0 >>>
 
template<class Pointer , std::enable_if_t< std::is_pointer_v< std::remove_reference_t< Pointer >>, int > = 0>
 Dune::Std::mdspan (Pointer &&) -> mdspan< std::remove_pointer_t< std::remove_reference_t< Pointer >>, Std::extents< std::size_t >>
 
template<class ElementType , class... II, std::enable_if_t<(... &&std::is_convertible_v< II, std::size_t >), int > = 0, std::enable_if_t<(sizeof...(II) > 0>
 Dune::Std::mdspan (ElementType *, II...) -> mdspan< ElementType, Std::dextents< std::size_t, sizeof...(II)>>
 
template<class ElementType , class SizeType , std::size_t N>
 Dune::Std::mdspan (ElementType *, std::span< SizeType, N >) -> mdspan< ElementType, Std::dextents< std::size_t, N >>
 
template<class ElementType , class SizeType , std::size_t N>
 Dune::Std::mdspan (ElementType *, const std::array< SizeType, N > &) -> mdspan< ElementType, Std::dextents< std::size_t, N >>
 
template<class ElementType , class IndexType , std::size_t... exts>
 Dune::Std::mdspan (ElementType *, const Std::extents< IndexType, exts... > &) -> mdspan< ElementType, Std::extents< IndexType, exts... >>
 
template<class ElementType , class Mapping , class Extents = typename Mapping::extents_type, class Layout = typename Mapping::layout_type>
 Dune::Std::mdspan (ElementType *, const Mapping &) -> mdspan< ElementType, Extents, Layout >
 
template<class Mapping , class Accessor , class DataHandle = typename Accessor::data_handle_type, class Element = typename Accessor::element_type, class Extents = typename Mapping::extents_type, class Layout = typename Mapping::layout_type>
 Dune::Std::mdspan (const DataHandle &, const Mapping &, const Accessor &) -> mdspan< Element, Extents, Layout, Accessor >