24 using build_type = std::conditional_t<is_etl_value<T>,
const std::decay_t<T>&, std::decay_t<T>>;
34 std::conditional_t<std::is_const_v<std::remove_reference_t<T>>,
const std::decay_t<T>&, std::decay_t<T>&>,
49 template <
typename H,
typename T>
76 using type = std::decay_t<T>;
91 decltype(
auto) wrap_scalar(T&& value)
requires (etl_expr<T>) {
92 return std::forward<T>(value);
100 template <
typename T>
102 return etl::scalar<std::decay_t<T>>{value};
110 template <
typename H
int,
typename T>
111 decltype(
auto) smart_wrap_scalar(T&& value) {
112 if constexpr (is_etl_expr<T>) {
113 return std::forward<T>(value);
123 template <
typename LE,
typename RE,
template <
typename>
typename OP>
130 template <
typename LE,
typename RE,
typename OP>
137 template <
typename LE,
typename RE,
typename OP>
143 template <
typename LE,
typename RE,
template <
typename>
typename OP>
150 template <
typename LE,
typename RE,
typename OP>
156 template <
typename LE,
typename RE,
template <
typename>
typename OP>
162 template <
typename LE,
typename RE,
template <
typename>
typename OP>
168 template <
typename LE,
typename RE,
template <
typename>
typename OP>
174 template <
typename E,
template <
typename>
typename OP>
180 template <
typename E,
typename OP>
186 template <
typename E,
typename OP>
192 template <
typename E,
template <
typename>
typename OP>
198 template <
typename LE,
typename RE,
template <
typename,
typename>
typename OP>
205 template <
typename E,
template <
typename>
typename OP,
typename... Args>
215 template <
typename E,
typename OP,
typename... Args>
Simple unary op for identity operations.
Definition: unary_expr.hpp:24
auto make_transform_expr(Args &&... args)
Make a stable unary transform unary expression.
Definition: expression_helpers.hpp:206
typename wrap_scalar_value_t_impl< T >::type wrap_scalar_value_t
Extract the value type of the given type taking scalar into account.
Definition: expression_helpers.hpp:83
decltype(auto) wrap_scalar(T &&value) requires(etl_expr< T >)
Transform a scalar value into an etl::scalar.
Definition: expression_helpers.hpp:91
std::conditional_t< etl::is_etl_expr< T >, T, etl::scalar< std::decay_t< T > >> wrap_scalar_t
Wraps a type either into a scalar or keep the ETL expression.
Definition: expression_helpers.hpp:41
Definition: expression_builder.hpp:699
An unary expression.
Definition: unary_expr.hpp:126
Simple unary op for stateful operations.
Definition: unary_expr.hpp:91
A binary expression.
Definition: binary_expr.hpp:18
std::conditional_t< is_etl_value< T >, const std::decay_t< T > &, std::decay_t< T > > build_type
Helper to build the type for a sub expression.
Definition: expression_helpers.hpp:24
std::conditional_t< is_etl_value< T >, std::conditional_t< std::is_const_v< std::remove_reference_t< T > >, const std::decay_t< T > &, std::decay_t< T > & >, std::decay_t< T > > build_identity_type
Helper to build the identity type for a sub expression.
Definition: expression_helpers.hpp:35
auto make_stateful_unary_expr(Args &&... args)
Make a stable unary transform unary expression for a stateful op.
Definition: expression_helpers.hpp:216
Represents a scalar value.
Definition: concepts_base.hpp:19
requires(D > 0) struct dyn_base
Matrix with run-time fixed dimensions.
Definition: dyn_base.hpp:113
std::conditional_t< etl::is_etl_expr< T >, T, etl::scalar< etl::value_t< H > >> smart_wrap_scalar_t
Wraps a type either into a scalar or keep the ETL expression.
Definition: expression_helpers.hpp:50
Definition: expression_helpers.hpp:53
typename decay_traits< E >::value_type value_t
Traits to extract the value type out of an ETL type.
Definition: tmp.hpp:81