Skip to content

Class expression_traits

class expression_traits<T> base

template <typename T>
struct expression_traits

Primary traits template for expressions.

Specializations of this template provide the value type, dimensionality and shape of an expression. The primary template is intentionally left undefined; users and library code provide specializations for concrete expression types.

Template parameters
T Expression type to query.

Fully qualified name: kfr::expression_traits<T>

Class expression_traits

class expression_traits<const T> base

template <has_expression_traits T>
struct expression_traits<const T> : expression_traits<T> { … }

Pass-through specialization that forwards traits for const-qualified expression types.

Template parameters
T Expression type.

Fully qualified name: kfr::expression_traits<const T>

Class expression_traits

class expression_traits<T &> base

template <has_expression_traits T>
struct expression_traits<T&> : expression_traits<T> { … }

Pass-through specialization that forwards traits for lvalue reference expression types.

Template parameters
T Expression type.

Fully qualified name: kfr::expression_traits<T &>

Class expression_traits

class expression_traits<T &&> base

template <has_expression_traits T>
struct expression_traits<T&&> : expression_traits<T> { … }

Pass-through specialization that forwards traits for rvalue reference expression types.

Template parameters
T Expression type.

Fully qualified name: kfr::expression_traits<T &&>

Class expression_traits

class expression_traits<const T &> base

template <has_expression_traits T>
struct expression_traits<const T&> : expression_traits<T> { … }

Pass-through specialization that forwards traits for const lvalue reference expression types.

Template parameters
T Expression type.

Fully qualified name: kfr::expression_traits<const T &>

Class expression_traits

class expression_traits<const T &&> base

template <has_expression_traits T>
struct expression_traits<const T&&> : expression_traits<T> { … }

Pass-through specialization that forwards traits for const rvalue reference expression types.

Template parameters
T Expression type.

Fully qualified name: kfr::expression_traits<const T &&>

Class expression_traits

class expression_traits<T> base

template <expr_element T>
struct expression_traits<T> : expression_traits_defaults { … }

Specialization of expression_traits for scalar vector element types.

A scalar element is treated as a zero-dimensional expression whose shape is empty and which is not an explicit operand (it can be used as an implicit argument to expression functions).

Template parameters
T Scalar element type.

typedef value_type

using value_type                              = T

Fully qualified name: kfr::expression_traits<T>::value_type

variable dims

constexpr static size_t dims                  = 0

Fully qualified name: kfr::expression_traits<T>::dims

function get_shape(const T &)

constexpr static shape<dims> get_shape(const T& self) { … }

Fully qualified name: kfr::expression_traits<T>::get_shape(const T &)

function get_shape()

constexpr static shape<dims> get_shape() { … }

Fully qualified name: kfr::expression_traits<T>::get_shape()

variable explicit_operand

constexpr static inline bool explicit_operand = false

Fully qualified name: kfr::expression_traits<T>::explicit_operand

variable random_access

constexpr static inline bool random_access    = T::random_access

Fully qualified name: kfr::expression_traits<T>::random_access

Fully qualified name: kfr::expression_traits<T>

Class expression_traits

class expression_traits<expression_scalar<T>> base

template <typename T>
struct expression_traits<expression_scalar<T>> : expression_traits_defaults { … }

typedef value_type

using value_type             = T

Fully qualified name: kfr::expression_traits<expression_scalar<T>>::value_type

variable dims

constexpr static size_t dims = 0

Fully qualified name: kfr::expression_traits<expression_scalar<T>>::dims

function get_shape(const expression_scalar<T> &)

constexpr static shape<0> get_shape(const expression_scalar<T>& self) { … }

Fully qualified name: kfr::expression_traits<expression_scalar<T>>::get_shape(const expression_scalar<T> &)

function get_shape()

constexpr static shape<0> get_shape() { … }

Fully qualified name: kfr::expression_traits<expression_scalar<T>>::get_shape()

Fully qualified name: kfr::expression_traits<expression_scalar<T>>

Class expression_traits

class expression_traits<expression_counter<T, Dims>> base

template <typename T, index_t Dims>
struct expression_traits<expression_counter<T, Dims>> : expression_traits_defaults { … }

typedef value_type

using value_type             = T

Fully qualified name: kfr::expression_traits<expression_counter<T, Dims>>::value_type

variable dims

constexpr static size_t dims = Dims

Fully qualified name: kfr::expression_traits<expression_counter<T, Dims>>::dims

function get_shape(const expression_counter<T, Dims> &)

constexpr static shape<dims> get_shape(const expression_counter<T, Dims>& self) { … }

Fully qualified name: kfr::expression_traits<expression_counter<T, Dims>>::get_shape(const expression_counter<T, Dims> &)

function get_shape()

constexpr static shape<dims> get_shape() { … }

Fully qualified name: kfr::expression_traits<expression_counter<T, Dims>>::get_shape()

Fully qualified name: kfr::expression_traits<expression_counter<T, Dims>>

Class expression_traits

class expression_traits<expression_slice<Arg>> base

template <typename Arg>
struct expression_traits<expression_slice<Arg>> : expression_traits_defaults { … }

typedef ArgTraits

using ArgTraits = expression_traits<Arg>

Fully qualified name: kfr::expression_traits<expression_slice<Arg>>::ArgTraits

typedef value_type

using value_type                    = typename ArgTraits::value_type

Fully qualified name: kfr::expression_traits<expression_slice<Arg>>::value_type

variable dims

constexpr static size_t dims        = ArgTraits::dims

Fully qualified name: kfr::expression_traits<expression_slice<Arg>>::dims

variable random_access

constexpr static bool random_access = ArgTraits::random_access

Fully qualified name: kfr::expression_traits<expression_slice<Arg>>::random_access

function get_shape(const expression_slice<Arg> &)

Fully qualified name: kfr::expression_traits<expression_slice<Arg>>::get_shape(const expression_slice<Arg> &)

function get_shape()

Fully qualified name: kfr::expression_traits<expression_slice<Arg>>::get_shape()

Fully qualified name: kfr::expression_traits<expression_slice<Arg>>

Class expression_traits

class expression_traits<expression_cast<T, Arg>> base

template <typename T, typename Arg>
struct expression_traits<expression_cast<T, Arg>> : expression_traits_defaults { … }

typedef ArgTraits

using ArgTraits = expression_traits<Arg>

Fully qualified name: kfr::expression_traits<expression_cast<T, Arg>>::ArgTraits

typedef value_type

using value_type                    = T

Fully qualified name: kfr::expression_traits<expression_cast<T, Arg>>::value_type

variable dims

constexpr static size_t dims        = ArgTraits::dims

Fully qualified name: kfr::expression_traits<expression_cast<T, Arg>>::dims

variable random_access

constexpr static bool random_access = ArgTraits::random_access

Fully qualified name: kfr::expression_traits<expression_cast<T, Arg>>::random_access

function get_shape(const expression_cast<T, Arg> &)

Fully qualified name: kfr::expression_traits<expression_cast<T, Arg>>::get_shape(const expression_cast<T, Arg> &)

function get_shape()

Fully qualified name: kfr::expression_traits<expression_cast<T, Arg>>::get_shape()

Fully qualified name: kfr::expression_traits<expression_cast<T, Arg>>

Class expression_traits

class expression_traits<expression_lambda<T, Dims, Fn, Rnd>> base

template <typename T, index_t Dims, typename Fn, bool Rnd>
struct expression_traits<expression_lambda<T, Dims, Fn, Rnd>> : expression_traits_defaults { … }

typedef value_type

using value_type                           = T

Fully qualified name: kfr::expression_traits<expression_lambda<T, Dims, Fn, Rnd>>::value_type

variable dims

constexpr static size_t dims               = Dims

Fully qualified name: kfr::expression_traits<expression_lambda<T, Dims, Fn, Rnd>>::dims

variable random_access

constexpr static inline bool random_access = Rnd

Fully qualified name: kfr::expression_traits<expression_lambda<T, Dims, Fn, Rnd>>::random_access

function get_shape(const expression_lambda<T, Dims, Fn, Rnd> &)

Fully qualified name: kfr::expression_traits<expression_lambda<T, Dims, Fn, Rnd>>::get_shape(const expression_lambda<T, Dims, Fn, Rnd> &)

function get_shape()

Fully qualified name: kfr::expression_traits<expression_lambda<T, Dims, Fn, Rnd>>::get_shape()

Fully qualified name: kfr::expression_traits<expression_lambda<T, Dims, Fn, Rnd>>

Class expression_traits

class expression_traits<expression_padded<Arg>> base

template <typename Arg>
struct expression_traits<expression_padded<Arg>> : expression_traits_defaults { … }

typedef ArgTraits

using ArgTraits = expression_traits<Arg>

Fully qualified name: kfr::expression_traits<expression_padded<Arg>>::ArgTraits

typedef value_type

using value_type                    = typename ArgTraits::value_type

Fully qualified name: kfr::expression_traits<expression_padded<Arg>>::value_type

variable dims

constexpr static size_t dims        = ArgTraits::dims

Fully qualified name: kfr::expression_traits<expression_padded<Arg>>::dims

variable random_access

constexpr static bool random_access = ArgTraits::random_access

Fully qualified name: kfr::expression_traits<expression_padded<Arg>>::random_access

function get_shape(const expression_padded<Arg> &)

Fully qualified name: kfr::expression_traits<expression_padded<Arg>>::get_shape(const expression_padded<Arg> &)

function get_shape()

Fully qualified name: kfr::expression_traits<expression_padded<Arg>>::get_shape()

Fully qualified name: kfr::expression_traits<expression_padded<Arg>>

Class expression_traits

class expression_traits<expression_reverse<Arg>> base

template <typename Arg>
struct expression_traits<expression_reverse<Arg>> : expression_traits_defaults { … }

typedef ArgTraits

using ArgTraits = expression_traits<Arg>

Fully qualified name: kfr::expression_traits<expression_reverse<Arg>>::ArgTraits

typedef value_type

using value_type             = typename ArgTraits::value_type

Fully qualified name: kfr::expression_traits<expression_reverse<Arg>>::value_type

variable dims

constexpr static size_t dims = ArgTraits::dims

Fully qualified name: kfr::expression_traits<expression_reverse<Arg>>::dims

function get_shape(const expression_reverse<Arg> &)

Fully qualified name: kfr::expression_traits<expression_reverse<Arg>>::get_shape(const expression_reverse<Arg> &)

function get_shape()

Fully qualified name: kfr::expression_traits<expression_reverse<Arg>>::get_shape()

Fully qualified name: kfr::expression_traits<expression_reverse<Arg>>

Class expression_traits

class expression_traits<expression_fixshape<Arg, fixed_shape_t<ShapeValues...>>> base

template <typename Arg, index_t... ShapeValues>
struct expression_traits<expression_fixshape<Arg, fixed_shape_t<ShapeValues...>>> : expression_traits_defaults { … }

typedef ArgTraits

using ArgTraits = expression_traits<Arg>

Fully qualified name: kfr::expression_traits<expression_fixshape<Arg, fixed_shape_t<ShapeValues...>>>::ArgTraits

typedef value_type

using value_type                    = typename ArgTraits::value_type

Fully qualified name: kfr::expression_traits<expression_fixshape<Arg, fixed_shape_t<ShapeValues...>>>::value_type

variable dims

constexpr static size_t dims        = sizeof...(ShapeValues)

Fully qualified name: kfr::expression_traits<expression_fixshape<Arg, fixed_shape_t<ShapeValues...>>>::dims

variable random_access

constexpr static bool random_access = ArgTraits::random_access

Fully qualified name: kfr::expression_traits<expression_fixshape<Arg, fixed_shape_t<ShapeValues...>>>::random_access

function get_shape(const expression_fixshape<Arg, fixed_shape_t<ShapeValues...>> &)

Fully qualified name: kfr::expression_traits<expression_fixshape<Arg, fixed_shape_t<ShapeValues...>>>::get_shape(const expression_fixshape<Arg, fixed_shape_t<ShapeValues...>> &)

function get_shape()

Fully qualified name: kfr::expression_traits<expression_fixshape<Arg, fixed_shape_t<ShapeValues...>>>::get_shape()

Fully qualified name: kfr::expression_traits<expression_fixshape<Arg, fixed_shape_t<ShapeValues...>>>

Class expression_traits

class expression_traits<expression_reshape<Arg, OutDims>> base

template <typename Arg, index_t OutDims>
struct expression_traits<expression_reshape<Arg, OutDims>> : expression_traits_defaults { … }

typedef ArgTraits

using ArgTraits = expression_traits<Arg>

Fully qualified name: kfr::expression_traits<expression_reshape<Arg, OutDims>>::ArgTraits

typedef value_type

using value_type                    = typename ArgTraits::value_type

Fully qualified name: kfr::expression_traits<expression_reshape<Arg, OutDims>>::value_type

variable dims

constexpr static size_t dims        = OutDims

Fully qualified name: kfr::expression_traits<expression_reshape<Arg, OutDims>>::dims

variable random_access

constexpr static bool random_access = ArgTraits::random_access

Fully qualified name: kfr::expression_traits<expression_reshape<Arg, OutDims>>::random_access

function get_shape(const expression_reshape<Arg, OutDims> &)

Fully qualified name: kfr::expression_traits<expression_reshape<Arg, OutDims>>::get_shape(const expression_reshape<Arg, OutDims> &)

function get_shape()

Fully qualified name: kfr::expression_traits<expression_reshape<Arg, OutDims>>::get_shape()

Fully qualified name: kfr::expression_traits<expression_reshape<Arg, OutDims>>

Class expression_traits

class expression_traits<expression_linspace<T, truncated>> base

template <typename T, bool truncated>
struct expression_traits<expression_linspace<T, truncated>> : expression_traits_defaults { … }

typedef value_type

using value_type             = T

Fully qualified name: kfr::expression_traits<expression_linspace<T, truncated>>::value_type

variable dims

constexpr static size_t dims = 1

Fully qualified name: kfr::expression_traits<expression_linspace<T, truncated>>::dims

function get_shape(const expression_linspace<T, truncated> &)

constexpr static shape<dims> get_shape(const expression_linspace<T, truncated>& self) { … }

Fully qualified name: kfr::expression_traits<expression_linspace<T, truncated>>::get_shape(const expression_linspace<T, truncated> &)

function get_shape()

constexpr static shape<dims> get_shape() { … }

Fully qualified name: kfr::expression_traits<expression_linspace<T, truncated>>::get_shape()

Fully qualified name: kfr::expression_traits<expression_linspace<T, truncated>>

Class expression_traits

class expression_traits<expression_concatenate<Arg1, Arg2, ConcatAxis>> base

template <typename Arg1, typename Arg2, index_t ConcatAxis>
struct expression_traits<expression_concatenate<Arg1, Arg2, ConcatAxis>> : expression_traits_defaults { … }

typedef ArgTraits1

using ArgTraits1 = expression_traits<Arg1>

Fully qualified name: kfr::expression_traits<expression_concatenate<Arg1, Arg2, ConcatAxis>>::ArgTraits1

typedef ArgTraits2

using ArgTraits2 = expression_traits<Arg2>

Fully qualified name: kfr::expression_traits<expression_concatenate<Arg1, Arg2, ConcatAxis>>::ArgTraits2

typedef value_type

using value_type                    = typename ArgTraits1::value_type

Fully qualified name: kfr::expression_traits<expression_concatenate<Arg1, Arg2, ConcatAxis>>::value_type

variable dims

constexpr static size_t dims        = ArgTraits1::dims

Fully qualified name: kfr::expression_traits<expression_concatenate<Arg1, Arg2, ConcatAxis>>::dims

variable random_access

constexpr static bool random_access = ArgTraits1::random_access && ArgTraits2::random_access

Fully qualified name: kfr::expression_traits<expression_concatenate<Arg1, Arg2, ConcatAxis>>::random_access

function concat_shape(const shape<dims> &, const shape<dims> &)

Fully qualified name: kfr::expression_traits<expression_concatenate<Arg1, Arg2, ConcatAxis>>::concat_shape(const shape<dims> &, const shape<dims> &)

function get_shape(const expression_concatenate<Arg1, Arg2, ConcatAxis> &)

Fully qualified name: kfr::expression_traits<expression_concatenate<Arg1, Arg2, ConcatAxis>>::get_shape(const expression_concatenate<Arg1, Arg2, ConcatAxis> &)

function get_shape()

Fully qualified name: kfr::expression_traits<expression_concatenate<Arg1, Arg2, ConcatAxis>>::get_shape()

Fully qualified name: kfr::expression_traits<expression_concatenate<Arg1, Arg2, ConcatAxis>>

Class expression_traits

class expression_traits<univector<T, Tag>> base

template <typename T, univector_tag Tag>
struct expression_traits<univector<T, Tag>> : public expression_traits_defaults { … }

Expression traits for univector , allowing it to participate in KFR expression evaluation.

typedef value_type

using value_type             = std::remove_const_t<T>

Fully qualified name: kfr::expression_traits<univector<T, Tag>>::value_type

variable dims

constexpr static size_t dims = 1

Fully qualified name: kfr::expression_traits<univector<T, Tag>>::dims

function get_shape(const univector<T, Tag> &)

constexpr static shape<dims> get_shape(const univector<T, Tag>& u) { … }

Returns the runtime shape of u.

Fully qualified name: kfr::expression_traits<univector<T, Tag>>::get_shape(const univector<T, Tag> &)

function get_shape()

constexpr static shape<dims> get_shape() { … }

Returns the static shape of the univector type. For fixed-size vectors this is the compile-time size; otherwise it is undefined_size .

Fully qualified name: kfr::expression_traits<univector<T, Tag>>::get_shape()

Fully qualified name: kfr::expression_traits<univector<T, Tag>>

Class expression_traits

class expression_traits<expression_handle<T, Dims>> base

template <typename T, index_t Dims>
struct expression_traits<expression_handle<T, Dims>> : expression_traits_defaults { … }

expression_traits specialization for expression_handle .

expression_handle

typedef value_type

using value_type             = T

Fully qualified name: kfr::expression_traits<expression_handle<T, Dims>>::value_type

Declared at base/handle.hpp:280

variable dims

constexpr static size_t dims = Dims

Number of dimensions.

Fully qualified name: kfr::expression_traits<expression_handle<T, Dims>>::dims

Declared at base/handle.hpp:281

function get_shape(const expression_handle<T, Dims> &)

constexpr static shape<dims> get_shape(const expression_handle<T, Dims>& self) { … }

Query the shape of the referenced expression via its vtable.

Fully qualified name: kfr::expression_traits<expression_handle<T, Dims>>::get_shape(const expression_handle<T, Dims> &)

Declared at base/handle.hpp:283

function get_shape()

constexpr static shape<dims> get_shape() { … }

Static shape query: undefined for an unbound handle.

Fully qualified name: kfr::expression_traits<expression_handle<T, Dims>>::get_shape()

Declared at base/handle.hpp:290

variable random_access

constexpr static inline bool random_access = false

Handles are not random-access.

Fully qualified name: kfr::expression_traits<expression_handle<T, Dims>>::random_access

Declared at base/handle.hpp:292

Fully qualified name: kfr::expression_traits<expression_handle<T, Dims>>

Declared at base/handle.hpp:278

Class expression_traits

class expression_traits<expression_placeholder<T, Dims, Key>> base

template <typename T, index_t Dims, size_t Key>
struct expression_traits<expression_placeholder<T, Dims, Key>> : public expression_traits_defaults { … }

expression_traits specialization for expression_placeholder .

expression_placeholder

typedef value_type

using value_type             = T

Fully qualified name: kfr::expression_traits<expression_placeholder<T, Dims, Key>>::value_type

Declared at base/handle.hpp:449

variable dims

constexpr static size_t dims = Dims

Number of dimensions.

Fully qualified name: kfr::expression_traits<expression_placeholder<T, Dims, Key>>::dims

Declared at base/handle.hpp:450

function get_shape(const expression_placeholder<T, Dims, Key> &)

constexpr static shape<dims> get_shape(const expression_placeholder<T, Dims, Key>& self) { … }

Shape of the bound expression, or infinite_size when unbound.

Fully qualified name: kfr::expression_traits<expression_placeholder<T, Dims, Key>>::get_shape(const expression_placeholder<T, Dims, Key> &)

Declared at base/handle.hpp:452

function get_shape()

constexpr static shape<dims> get_shape() { … }

Static shape query: undefined for an unbound placeholder.

Fully qualified name: kfr::expression_traits<expression_placeholder<T, Dims, Key>>::get_shape()

Declared at base/handle.hpp:457

Fully qualified name: kfr::expression_traits<expression_placeholder<T, Dims, Key>>

Declared at base/handle.hpp:447

Class expression_traits

class expression_traits<tensor<T, Dims>> base

template <typename T, index_t Dims>
struct expression_traits<tensor<T, Dims>> : expression_traits_defaults { … }

Expression traits for tensor, enabling its use as an expression argument.

Template parameters
T element type.
Dims number of dimensions.

typedef value_type

using value_type             = T

Fully qualified name: kfr::expression_traits<tensor<T, Dims>>::value_type

Declared at base/tensor.hpp:1266

variable dims

constexpr static size_t dims = Dims

Fully qualified name: kfr::expression_traits<tensor<T, Dims>>::dims

Declared at base/tensor.hpp:1267

function get_shape(const tensor<T, Dims> &)

Returns the shape of self.

Fully qualified name: kfr::expression_traits<tensor<T, Dims>>::get_shape(const tensor<T, Dims> &)

Declared at base/tensor.hpp:1270

function get_shape()

Returns the static shape of the expression, with undefined extents.

Fully qualified name: kfr::expression_traits<tensor<T, Dims>>::get_shape()

Declared at base/tensor.hpp:1275

Fully qualified name: kfr::expression_traits<tensor<T, Dims>>

Declared at base/tensor.hpp:1264

This file was generated by cxxdox, a C++ documentation generator based on MkDocs Material and libclang.