8 #ifndef BC_CORE_OPERATION_TRAITS_TAGS_H_ 9 #define BC_CORE_OPERATION_TRAITS_TAGS_H_ 19 template<
class T>
using query_dx = decltype(std::declval<T>().dx);
32 static constexpr
bool is_linear_operation
33 = std::is_base_of<linear_operation,T>::value;
35 static constexpr
bool is_linear_assignment_operation
36 = std::is_base_of<linear_assignment_operation, T>::value;
38 static constexpr
bool is_assignment_operation
39 = std::is_base_of<assignment_operation, T>::value;
41 static constexpr
bool is_blas_function
42 = std::is_base_of<BLAS_Function, T>::value;
44 static constexpr
bool is_nonlinear_operation
45 = !is_blas_function && !is_linear_operation;
Definition: constexpr_int.h:14
typename T::alpha_modifier query_alpha_modifier
Definition: operation_traits.h:17
typename T::beta_modifier query_beta_modifier
Definition: operation_traits.h:18
typename conditional_detected< func, TestType, DefaultType >::type conditional_detected_t
Definition: type_traits.h:87
Definition: operation_traits.h:24
decltype(std::declval< T >().dx) query_dx
Definition: operation_traits.h:19
The Evaluator determines if an expression needs to be greedily optimized.
Definition: algorithms.h:22