|
template<class... Args> |
auto | operator() (Args... args) -> decltype(std::declval< E >()(args...)) |
|
auto | shape () const -> decltype(std::declval< xtl::constify_t< E > >(). shape()) |
|
auto | dimension () const -> decltype(std::declval< xtl::constify_t< E > >(). dimension()) |
|
auto | size () const -> decltype(std::declval< xtl::constify_t< E > >(). size()) |
|
auto | layout () const -> decltype(std::declval< xtl::constify_t< E > >(). layout()) |
|
auto | is_contiguous () const -> decltype(std::declval< xtl::constify_t< E > >(). is_contiguous()) |
|
template<layout_type L = ::xt::layout_type::row_major, class S > |
auto | begin (const S &shape) noexcept -> decltype(std::declval< E >().template begin< L >(shape)) |
|
template<layout_type L = ::xt::layout_type::row_major> |
auto | begin () noexcept -> decltype(std::declval< E >().template begin< L >()) |
|
template<layout_type L = ::xt::layout_type::row_major, class S > |
auto | end (const S &shape) noexcept -> decltype(std::declval< E >().template end< L >(shape)) |
|
template<layout_type L = ::xt::layout_type::row_major> |
auto | end () noexcept -> decltype(std::declval< E >().template end< L >()) |
|
template<layout_type L = ::xt::layout_type::row_major> |
auto | begin () const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template begin< L >()) |
|
template<layout_type L = ::xt::layout_type::row_major, class S > |
auto | begin (const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template begin< L >(shape)) |
|
template<layout_type L = ::xt::layout_type::row_major> |
auto | end () const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template end< L >()) |
|
template<layout_type L = ::xt::layout_type::row_major, class S > |
auto | end (const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template end< L >(shape)) |
|
template<layout_type L = ::xt::layout_type::row_major> |
auto | cbegin () const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template cbegin< L >()) |
|
template<layout_type L = ::xt::layout_type::row_major, class S > |
auto | cbegin (const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template cbegin< L >(shape)) |
|
template<layout_type L = ::xt::layout_type::row_major> |
auto | cend () const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template cend< L >()) |
|
template<layout_type L = ::xt::layout_type::row_major, class S > |
auto | cend (const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template cend< L >(shape)) |
|
template<layout_type L = ::xt::layout_type::row_major, class S > |
auto | rbegin (const S &shape) noexcept -> decltype(std::declval< E >().template rbegin< L >(shape)) |
|
template<layout_type L = ::xt::layout_type::row_major> |
auto | rbegin () noexcept -> decltype(std::declval< E >().template rbegin< L >()) |
|
template<layout_type L = ::xt::layout_type::row_major, class S > |
auto | rend (const S &shape) noexcept -> decltype(std::declval< E >().template rend< L >(shape)) |
|
template<layout_type L = ::xt::layout_type::row_major> |
auto | rend () noexcept -> decltype(std::declval< E >().template rend< L >()) |
|
template<layout_type L = ::xt::layout_type::row_major> |
auto | rbegin () const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template rbegin< L >()) |
|
template<layout_type L = ::xt::layout_type::row_major, class S > |
auto | rbegin (const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template rbegin< L >(shape)) |
|
template<layout_type L = ::xt::layout_type::row_major> |
auto | rend () const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template rend< L >()) |
|
template<layout_type L = ::xt::layout_type::row_major, class S > |
auto | rend (const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template rend< L >(shape)) |
|
template<layout_type L = ::xt::layout_type::row_major> |
auto | crbegin () const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template crbegin< L >()) |
|
template<layout_type L = ::xt::layout_type::row_major, class S > |
auto | crbegin (const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template crbegin< L >(shape)) |
|
template<layout_type L = ::xt::layout_type::row_major> |
auto | crend () const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template crend< L >()) |
|
template<layout_type L = ::xt::layout_type::row_major, class S > |
auto | crend (const S &shape) const noexcept -> decltype(std::declval< xtl::constify_t< E > >().template crend< L >(shape)) |
|
auto | linear_begin () -> decltype(std::declval< E >(). linear_begin()) |
|
auto | linear_end () -> decltype(std::declval< E >(). linear_end()) |
|
auto | linear_begin () const -> decltype(std::declval< xtl::constify_t< E > >(). linear_begin()) |
|
auto | linear_end () const -> decltype(std::declval< xtl::constify_t< E > >(). linear_end()) |
|
auto | linear_cbegin () const -> decltype(std::declval< xtl::constify_t< E > >(). linear_cbegin()) |
|
auto | linear_cend () const -> decltype(std::declval< xtl::constify_t< E > >(). linear_cend()) |
|
auto | linear_rbegin () -> decltype(std::declval< E >(). linear_rbegin()) |
|
auto | linear_rend () -> decltype(std::declval< E >(). linear_rend()) |
|
auto | linear_rbegin () const -> decltype(std::declval< xtl::constify_t< E > >(). linear_rbegin()) |
|
auto | linear_rend () const -> decltype(std::declval< xtl::constify_t< E > >(). linear_rend()) |
|
auto | linear_crbegin () const -> decltype(std::declval< xtl::constify_t< E > >(). linear_crbegin()) |
|
auto | linear_crend () const -> decltype(std::declval< xtl::constify_t< E > >(). linear_crend()) |
|
template<class T = E> |
std::enable_if_t< has_strides< T >::value, const inner_strides_type & > | strides () const |
|
template<class T = E> |
std::enable_if_t< has_strides< T >::value, const inner_strides_type & > | backstrides () const |
|
template<class T = E> |
std::enable_if_t< has_data_interface< T >::value, pointer > | data () noexcept |
|
template<class T = E> |
std::enable_if_t< has_data_interface< T >::value, pointer > | data () const noexcept |
|
template<class T = E> |
std::enable_if_t< has_data_interface< T >::value, size_type > | data_offset () const noexcept |
|
template<class T = E> |
std::enable_if_t< has_data_interface< T >::value, typename T::storage_type & > | storage () noexcept |
|
template<class T = E> |
std::enable_if_t< has_data_interface< T >::value, const typename T::storage_type & > | storage () const noexcept |
|
template<class It > |
reference | element (It first, It last) |
|
template<class It > |
const_reference | element (It first, It last) const |
|
template<class S > |
bool | broadcast_shape (S &shape, bool reuse_cache=false) const |
|
template<class S > |
bool | has_linear_assign (const S &strides) const noexcept |
|
template<class S > |
auto | stepper_begin (const S &shape) noexcept -> decltype(std::declval< E >().stepper_begin(shape)) |
|
template<class S > |
auto | stepper_end (const S &shape, layout_type l) noexcept -> decltype(std::declval< E >().stepper_end(shape, l)) |
|
template<class S > |
auto | stepper_begin (const S &shape) const noexcept -> decltype(std::declval< const E >().stepper_begin(shape)) |
|
template<class S > |
auto | stepper_end (const S &shape, layout_type l) const noexcept -> decltype(std::declval< const E >().stepper_end(shape, l)) |
|
|
| xshared_expression (const std::shared_ptr< E > &ptr) |
| Constructor for xshared expression (note: usually the free function make_xshared is recommended).
|
|
long | use_count () const noexcept |
| Return the number of times this expression is referenced.
|
|
derived_type & | derived_cast () &noexcept |
| Returns a reference to the actual derived type of the xexpression.
|
|
const derived_type & | derived_cast () const &noexcept |
| Returns a constant reference to the actual derived type of the xexpression.
|
|
derived_type | derived_cast () &&noexcept |
| Returns a constant reference to the actual derived type of the xexpression.
|
|
template<
class E>
class xt::xshared_expression< E >
Shared xexpressions.
Due to C++ lifetime constraints it's sometimes necessary to create shared expressions (akin to a shared pointer).
For example, when a temporary expression needs to be used twice in another expression, shared expressions can come to the rescue:
template <class E>
{
return result;
}
auto cos(E &&e) noexcept -> detail::xfunction_type_t< math::cos_fun, E >
Cosine function.
auto sin(E &&e) noexcept -> detail::xfunction_type_t< math::sin_fun, E >
Sine function.
xshared_expression< E > make_xshared(xexpression< E > &&expr)
Helper function to create shared expression from any xexpression.
Definition at line 508 of file xexpression.hpp.