tetl 0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
layout_right::mapping< Extents > Struct Template Reference

#include <layout_right.hpp>

Public Types

using extents_type = Extents
 
using index_type = typename extents_type::index_type
 
using layout_type = layout_right
 
using rank_type = typename extents_type::rank_type
 
using size_type = typename extents_type::size_type
 

Public Member Functions

constexpr mapping () noexcept=default
 
constexpr mapping (extents_type const &ext) noexcept
 
constexpr mapping (mapping const &) noexcept=default
 
template<typename OtherExtents>
requires (extents_type::rank() <= 1) && is_constructible_v<extents_type, OtherExtents>
constexpr explicit (!is_convertible_v< OtherExtents, extents_type >) mapping(layout_left
 
template<typename OtherExtents>
requires is_constructible_v<extents_type, OtherExtents>
constexpr explicit (!is_convertible_v< OtherExtents, extents_type >) mapping(mapping< OtherExtents > const &other) noexcept
 
constexpr auto extents () const noexcept -> extents_type const &
 
template<typename... Indices>
requires (sizeof...(Indices) == extents_type::rank()) and (is_convertible_v<Indices, index_type> and ...) and (is_nothrow_constructible_v<index_type, Indices> and ...)
constexpr auto operator() (Indices... indices) const noexcept -> index_type
 
template<typename OtherExtents>
constexpr explicit(extents_type::rank() > 0) mapping(layout_stride constexpr auto operator= (mapping const &) noexcept -> mapping &=default
 
constexpr auto required_span_size () const noexcept -> index_type
 
constexpr auto stride (rank_type r) const noexcept -> index_type requires(extents_type::rank() > 0)
 

Static Public Member Functions

static constexpr auto is_always_exhaustive () noexcept -> bool
 
static constexpr auto is_always_strided () noexcept -> bool
 
static constexpr auto is_always_unique () noexcept -> bool
 
static constexpr auto is_exhaustive () noexcept -> bool
 
static constexpr auto is_strided () noexcept -> bool
 
static constexpr auto is_unique () noexcept -> bool
 

Friends

template<typename OtherExtents>
constexpr auto operator== (mapping const &lhs, mapping< OtherExtents > const &rhs) noexcept -> bool
 

Member Typedef Documentation

◆ extents_type

template<typename Extents>
using extents_type = Extents

◆ index_type

template<typename Extents>
using index_type = typename extents_type::index_type

◆ layout_type

template<typename Extents>
using layout_type = layout_right

◆ rank_type

template<typename Extents>
using rank_type = typename extents_type::rank_type

◆ size_type

template<typename Extents>
using size_type = typename extents_type::size_type

Constructor & Destructor Documentation

◆ mapping() [1/3]

template<typename Extents>
mapping ( )
constexprdefaultnoexcept

◆ mapping() [2/3]

template<typename Extents>
mapping ( mapping< Extents > const & )
constexprdefaultnoexcept

◆ mapping() [3/3]

template<typename Extents>
mapping ( extents_type const & ext)
inlineconstexprnoexcept

Member Function Documentation

◆ explicit() [1/2]

template<typename Extents>
template<typename OtherExtents>
requires (extents_type::rank() <= 1) && is_constructible_v<extents_type, OtherExtents>
explicit ( !is_convertible_v< OtherExtents, extents_type > )
inlineconstexpr

◆ explicit() [2/2]

template<typename Extents>
template<typename OtherExtents>
requires is_constructible_v<extents_type, OtherExtents>
explicit ( !is_convertible_v< OtherExtents, extents_type > ) const &
inlineconstexprnoexcept

◆ extents()

template<typename Extents>
auto extents ( ) const -> extents_type const&
inlinenodiscardconstexprnoexcept

◆ is_always_exhaustive()

template<typename Extents>
constexpr auto is_always_exhaustive ( ) -> bool
inlinestaticnodiscardconstexprnoexcept

◆ is_always_strided()

template<typename Extents>
constexpr auto is_always_strided ( ) -> bool
inlinestaticnodiscardconstexprnoexcept

◆ is_always_unique()

template<typename Extents>
constexpr auto is_always_unique ( ) -> bool
inlinestaticnodiscardconstexprnoexcept

◆ is_exhaustive()

template<typename Extents>
constexpr auto is_exhaustive ( ) -> bool
inlinestaticnodiscardconstexprnoexcept

◆ is_strided()

template<typename Extents>
constexpr auto is_strided ( ) -> bool
inlinestaticnodiscardconstexprnoexcept

◆ is_unique()

template<typename Extents>
constexpr auto is_unique ( ) -> bool
inlinestaticnodiscardconstexprnoexcept

◆ operator()()

template<typename Extents>
template<typename... Indices>
requires (sizeof...(Indices) == extents_type::rank()) and (is_convertible_v<Indices, index_type> and ...) and (is_nothrow_constructible_v<index_type, Indices> and ...)
auto operator() ( Indices... indices) const -> index_type
inlinenodiscardconstexprnoexcept

◆ operator=()

template<typename Extents>
template<typename OtherExtents>
explicit(extents_type::rank() > 0) mapping(layout_stride constexpr auto operator= ( mapping< Extents > const & ) -> mapping &=default
constexprdefaultnoexcept

◆ required_span_size()

template<typename Extents>
auto required_span_size ( ) const -> index_type
inlinenodiscardconstexprnoexcept

◆ stride()

template<typename Extents>
auto stride ( rank_type r) const -> index_type requires(extents_type::rank() > 0)
inlinenodiscardconstexprnoexcept

Friends And Related Symbol Documentation

◆ operator==

template<typename Extents>
template<typename OtherExtents>
auto operator== ( mapping< Extents > const & lhs,
mapping< OtherExtents > const & rhs ) -> bool
friend

The documentation for this struct was generated from the following files: