16 #ifndef dealii_differentiation_sd_symengine_product_types_h
17 #define dealii_differentiation_sd_symengine_product_types_h
21 #ifdef DEAL_II_WITH_SYMENGINE
30 # include <boost/type_traits.hpp>
32 # include <type_traits>
63 template <
typename T,
typename U,
typename V =
void>
69 std::enable_if_t<std::is_arithmetic_v<T>>>
78 std::enable_if_t<boost::is_complex<T>::value &&
79 std::is_arithmetic_v<typename T::value_type>>>
84 template <
int rank,
int dim,
typename T>
94 template <
int rank,
int dim,
typename T>
115 template <
typename T>
119 GeneralProductTypeImpl<T, Differentiation::SD::Expression>::type;
122 template <
typename T>
126 GeneralProductTypeImpl<T, Differentiation::SD::Expression>::type;
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
typename internal::ProductTypeImpl< std::decay_t< T >, std::decay_t< U > >::type type
typename SD::GeneralProductTypeImpl< T, Differentiation::SD::Expression >::type type
typename SD::GeneralProductTypeImpl< T, Differentiation::SD::Expression >::type type