9 #ifndef BLACKCAT_INTERNAL_FORWARD_DECLS_H_ 10 #define BLACKCAT_INTERNAL_FORWARD_DECLS_H_ 12 #include <type_traits> 18 template<
class,
class,
class>
struct Bin_Op;
19 template<
class,
class>
struct Un_Op;
23 #define BC_QUERY_TAG(tag_name)\ 25 using query_##tag_name = typename T::tag_name; 44 #define BC_TAG_DEFINITION(name, using_name, default_value)\ 45 struct name { using using_name = default_value; };\ 46 namespace detail { BC_QUERY_TAG(using_name) } 51 #undef BC_TAG_DEFINITION 55 using is_view = std::true_type;
56 using copy_constructible = std::false_type;
57 using move_constructible = std::false_type;
58 using copy_assignable = std::true_type;
59 using move_assignable = std::false_type;
63 using is_view = std::true_type;
64 using is_const_view = std::true_type;
65 using copy_constructible = std::false_type;
66 using move_constructible = std::false_type;
67 using copy_assignable = std::false_type;
68 using move_assignable = std::false_type;
bc::traits::conditional_detected_t< detail::query_copy_constructible, T, std::true_type > is_copy_constructible
Definition: expression_template_traits.h:97
bc::traits::conditional_detected_t< detail::query_move_assignable, T, std::true_type > is_move_assignable
Definition: expression_template_traits.h:100
bc::traits::truth_type<!is_noncontinuous::value > is_continuous
Definition: expression_template_traits.h:128
bc::traits::conditional_detected_t< detail::query_is_view, T, is_const_view > is_view
Definition: expression_template_traits.h:91
typename T::requires_greedy_evaluation query_requires_greedy_evaluation
Definition: expression_template_traits.h:34
bc::traits::conditional_detected_t< detail::query_allocation_type, T, system_tag > allocation_tag
Definition: expression_template_traits.h:82
typename T::stack_allocated query_stack_allocated
Definition: expression_template_traits.h:35
std::is_base_of< bc::oper::BLAS_Function, T > is_blas_expression
Definition: expression_template_traits.h:105
typename T::copy_constructible query_copy_constructible
Definition: expression_template_traits.h:31
Definition: expression_template_traits.h:48
typename T::is_noncontinuous_in_memory query_is_noncontinuous_in_memory
Definition: expression_template_traits.h:49
typename T::is_temporary_value query_is_temporary_value
Definition: expression_template_traits.h:48
Definition: expression_template_traits.h:49
typename T::is_const_view query_is_const_view
Definition: expression_template_traits.h:40
bc::traits::conditional_detected_t< detail::query_copy_assignable, T, std::true_type > is_copy_assignable
Definition: expression_template_traits.h:103
typename T::expression_template_expression_type query_expression_template_expression_type
Definition: expression_template_traits.h:37
typename T::is_view_type query_is_view_type
Definition: expression_template_traits.h:72
bc::traits::conditional_detected_t< detail::query_expression_template_array_type, T, std::false_type > is_array
Definition: expression_template_traits.h:111
bc::traits::conditional_detected_t< detail::query_is_temporary_value, T, std::false_type > is_temporary
Definition: expression_template_traits.h:120
bc::traits::truth_type< is_array::value||is_expr::value > is_expression_template
Definition: expression_template_traits.h:117
typename T::expression_template_array_type query_expression_template_array_type
Definition: expression_template_traits.h:38
#define BC_TAG_DEFINITION(name, using_name, default_value)
Definition: expression_template_traits.h:44
bc::traits::conditional_detected_t< detail::query_requires_greedy_evaluation, T, std::false_type > requires_greedy_evaluation
Definition: expression_template_traits.h:108
bc::traits::conditional_detected_t< detail::query_move_constructible, T, std::true_type > is_move_constructible
Definition: expression_template_traits.h:94
typename T::is_view query_is_view
Definition: expression_template_traits.h:39
Definition: expression_template_traits.h:76
bc::traits::conditional_detected_t< detail::query_stack_allocated, T, std::false_type > is_stack_allocated
Definition: expression_template_traits.h:123
bc::traits::conditional_detected_t< detail::query_is_const_view, T, std::false_type > is_const_view
Definition: expression_template_traits.h:88
typename conditional_detected< func, TestType, DefaultType >::type conditional_detected_t
Definition: type_traits.h:87
typename T::copy_assignable query_copy_assignable
Definition: expression_template_traits.h:30
typename T::value_type query_value_type
Definition: expression_template_traits.h:28
typename T::move_assignable query_move_assignable
Definition: expression_template_traits.h:32
typename T::allocation_type query_allocation_type
Definition: expression_template_traits.h:29
bc::traits::conditional_detected_t< detail::query_expression_template_expression_type, T, std::false_type > is_expr
Definition: expression_template_traits.h:114
conditional_t< Bool, true_type, false_type > truth_type
Definition: type_traits.h:49
bc::traits::conditional_detected_t< detail::query_value_type, T, void > value_type
Definition: expression_template_traits.h:85
typename T::move_constructible query_move_constructible
Definition: expression_template_traits.h:33
typename T::system_tag query_system_tag
Definition: expression_template_traits.h:27
Definition: expression_template_traits.h:62
#define BC_QUERY_TAG(tag_name)
Definition: expression_template_traits.h:23
Definition: expression_template_traits.h:54
Definition: expression_template_traits.h:19
bc::traits::conditional_detected_t< detail::query_system_tag, T, host_tag > system_tag
Definition: expression_template_traits.h:79
The Evaluator determines if an expression needs to be greedily optimized.
Definition: algorithms.h:22
bc::traits::conditional_detected_t< detail::query_is_noncontinuous_in_memory, T, std::false_type > is_noncontinuous
Definition: expression_template_traits.h:126