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>
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>
86 template <
int rank,
int dim,
typename T>
96 template <
int rank,
int dim,
typename T>
117 template <
typename T>
121 GeneralProductTypeImpl<T, Differentiation::SD::Expression>::type;
124 template <
typename T>
128 GeneralProductTypeImpl<T, Differentiation::SD::Expression>::type;
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
typename internal::ProductTypeImpl< typename std::decay< T >::type, typename std::decay< U >::type >::type type
typename SD::GeneralProductTypeImpl< T, Differentiation::SD::Expression >::type type
typename SD::GeneralProductTypeImpl< T, Differentiation::SD::Expression >::type type