8 #ifndef BLACKCAT_TENSORS_EXPRESSION_BASE_H_ 9 #define BLACKCAT_TENSORS_EXPRESSION_BASE_H_ 21 template<
class ExpressionTemplate>
22 class Expression_Base:
public ExpressionTemplate
28 using expression_type = ExpressionTemplate;
33 static constexpr
int tensor_dim = expression_type::tensor_dim;
36 using value_type =
typename ExpressionTemplate::value_type;
37 using system_tag =
typename ExpressionTemplate::system_tag;
39 using ExpressionTemplate::ExpressionTemplate;
40 using ExpressionTemplate::expression_template;
54 #include "expression_operations.h" #define BC_ITERATOR_DEF(suffix, iterator_name, begin_func, end_func)
Definition: tensor_iterator_defs.h:22
auto cw_rbegin() const
Definition: expression_base.h:51
Definition: expression_base.h:49
typename ValueType ::value_type value_type
Definition: expression_base.h:36
static constexpr int tensor_dim
Definition: expression_base.h:33
Expression_Base()
Definition: expression_base.h:43
typename ValueType ::system_tag system_tag
Definition: expression_base.h:37
Definition: expression_template_traits.h:76
#define BC_FORWARD_ITER(suffix, iter, access)
Definition: tensor_iterator_defs.h:2
auto cw_rend() const
Definition: expression_base.h:52
Definition: expression_base.h:50
auto cw_begin() const
Definition: expression_base.h:51
static constexpr int tensor_iterator_dim
Definition: expression_base.h:34
auto cw_end() const
Definition: expression_base.h:52
The Evaluator determines if an expression needs to be greedily optimized.
Definition: algorithms.h:22