2 #include <fastad_bits/util/type_traits.hpp>
15 template <
class ValueType
17 ,
class ConstraintType>
20 template <
class ValueType
24 template <
class ValueType
31 template <
class ValueType
39 template <
class TupExprType,
class>
51 template <
class T,
class =
void>
59 util::is_param_v<std::decay_t<T>>
63 using raw_t = std::decay_t<T>;
64 using value_t =
typename
66 using shape_t =
typename
68 using constraint_t =
typename
78 util::is_tparam_v<std::decay_t<T>>
82 using raw_t = std::decay_t<T>;
83 using value_t =
typename
85 using shape_t =
typename
95 util::is_data_v<std::decay_t<T>>
99 using raw_t = std::decay_t<T>;
100 using value_t =
typename
102 using shape_t =
typename
111 std::enable_if_t<std::is_arithmetic_v<std::decay_t<T>>
120 std::enable_if_t<ad::util::is_eigen_v<std::decay_t<T>>
124 using raw_t = std::decay_t<T>;
125 using value_t =
typename T::Scalar;
126 using shape_t = std::conditional_t<
127 T::ColsAtCompileTime == 1,
137 util::is_var_expr_v<std::decay_t<T>> &&
138 !util::is_var_v<std::decay_t<T>>
155 template <
class T,
class =
void>
162 util::is_model_expr_v<std::decay_t<T>>
172 util::is_program_expr_v<std::decay_t<T>>
191 std::is_arithmetic_v<std::decay_t<T>> ||
192 ad::util::is_eigen_v<std::decay_t<T>> ||
193 util::is_var_v<std::decay_t<T>> ||
194 util::is_var_expr_v<std::decay_t<T>>
201 template <
class T1,
class T2>
203 !(std::is_arithmetic_v<std::decay_t<T1>> &&
204 std::is_arithmetic_v<std::decay_t<T2>>)
209 std::is_arithmetic_v<std::decay_t<T>> ||
210 util::is_var_v<std::decay_t<T>> ||
211 util::is_var_expr_v<std::decay_t<T>>