24 template <
typename Expr>
60 bool alias(
const E& other)
const noexcept {
61 return value.alias(other);
73 optimized_forward(value, [&lhs](
auto&& optimized)
mutable { optimized.assign_to(lhs); });
83 optimized_forward(value, [&lhs](
auto&& optimized)
mutable { optimized.assign_add_to(lhs); });
93 optimized_forward(value, [&lhs](
auto&& optimized)
mutable { optimized.assign_sub_to(lhs); });
100 template <
typename L>
103 optimized_forward(value, [&lhs](
auto&& optimized)
mutable { optimized.assign_mul_to(lhs); });
110 template <
typename L>
113 optimized_forward(value, [&lhs](
auto&& optimized)
mutable { optimized.assign_div_to(lhs); });
120 template <
typename L>
123 optimized_forward(value, [&lhs](
auto&& optimized)
mutable { optimized.assign_mod_to(lhs); });
133 return os <<
"OPT(" << expr.value <<
")";
141 template <
typename Expr>
Contains traits for wrapper expressions.
optimized_expr(Expr l)
Construt a new optimized expression around the given ETL expression.
Definition: optimized_expr.hpp:42
void assign_to(L &&lhs) const
Assign to the given left-hand-side expression.
Definition: optimized_expr.hpp:71
void optimized_forward(Expr &expr, Result result)
Optimize an expression and pass the optimized expression to the given functor.
Definition: optimizer.hpp:434
value_t< Expr > value_type
The value type.
Definition: optimized_expr.hpp:27
friend std::ostream & operator<<(std::ostream &os, const optimized_expr &expr)
Prints the type of the optimized expression to the stream.
Definition: optimized_expr.hpp:132
void assign_sub_to(L &&lhs) const
Sub from the given left-hand-side expression.
Definition: optimized_expr.hpp:91
void assign_mul_to(L &&lhs) const
Multiply the given left-hand-side expression.
Definition: optimized_expr.hpp:101
Traits to get information about ETL types.
Definition: tmp.hpp:68
Root namespace for the ETL library.
Definition: adapter.hpp:15
A wrapper for expressions that need to be optimized.
Definition: optimized_expr.hpp:25
Expr expr_t
The wrapped expression type.
Definition: optimized_expr.hpp:26
bool alias(const E &other) const noexcept
Test if this expression aliases with the given expression.
Definition: optimized_expr.hpp:60
void assign_add_to(L &&lhs) const
Add to the given left-hand-side expression.
Definition: optimized_expr.hpp:81
void assign_div_to(L &&lhs) const
Divide the given left-hand-side expression.
Definition: optimized_expr.hpp:111
typename decay_traits< E >::value_type value_t
Traits to extract the value type out of an ETL type.
Definition: tmp.hpp:81
Traits for wrapper expressions.
Definition: wrapper_traits.hpp:21
void assign_mod_to(L &&lhs) const
Modulo the given left-hand-side expression.
Definition: optimized_expr.hpp:121