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 std::enable_if_t<std::is_arithmetic<T>::value>>
79 std::enable_if_t<boost::is_complex<T>::value &&
80 std::is_arithmetic<typename T::value_type>::value>>
85 template <
int rank,
int dim,
typename T>
95 template <
int rank,
int dim,
typename T>
116 template <
typename T>
120 GeneralProductTypeImpl<T, Differentiation::SD::Expression>::type;
123 template <
typename T>
127 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