16 #ifndef dealii_differentiation_sd_symengine_product_types_h
17 #define dealii_differentiation_sd_symengine_product_types_h
19 #include <deal.II/base/config.h>
21 #ifdef DEAL_II_WITH_SYMENGINE
24 # include <deal.II/base/template_constraints.h>
26 # include <deal.II/differentiation/sd/symengine_number_types.h>
28 # include <boost/type_traits.hpp>
30 # include <type_traits>
33 DEAL_II_NAMESPACE_OPEN
63 template <
typename T,
typename U,
typename V =
void>
70 typename std::enable_if<std::is_arithmetic<T>::value>::type>
79 typename std::enable_if<
80 boost::is_complex<T>::value &&
81 std::is_arithmetic<typename T::value_type>::value>::type>
101 typename SD::GeneralProductTypeImpl<T,
106 template <
typename T>
110 typename SD::GeneralProductTypeImpl<T,
117 DEAL_II_NAMESPACE_CLOSE
119 #endif // DEAL_II_WITH_SYMENGINE