16 #ifndef dealii_template_constraints_h 17 #define dealii_template_constraints_h 20 #include <deal.II/base/config.h> 21 #include <deal.II/base/complex_overloads.h> 26 DEAL_II_NAMESPACE_OPEN
30 namespace TemplateConstraints
33 template <
bool... Values>
struct BoolStorage;
40 template <
bool... Values>
43 static constexpr
bool value =
44 std::is_same<BoolStorage<Values...,
true>,
45 BoolStorage<
true, Values...>>::value;
56 template <
class Base,
class... Derived>
59 static constexpr
bool value =
71 template <
class Type,
class... Types>
74 static constexpr
bool value =
85 template <
bool... Values>
86 struct enable_if_all : std::enable_if<internal::TemplateConstraints::all_true<Values...>::value>
91 template <
bool,
typename>
struct constraint_and_return_value;
151 template <
typename T>
152 struct DEAL_II_DEPRECATED constraint_and_return_value<true,T>
210 template <
typename T>
242 template <
typename T>
243 static bool equal (
const T *p1,
const T *p2)
255 template <
typename T,
typename U>
256 static bool equal (
const T *,
const U *)
365 template <
typename T,
typename U>
386 template <
typename T,
typename U>
389 typedef decltype(std::declval<T>() * std::declval<U>()) type;
444 template <
typename T,
typename U>
448 typename std::decay<T>::type,
typename std::decay<U>::type>::type type;
459 template <
typename T>
460 struct ProductTypeImpl<
std::complex<T>,std::complex<T> >
462 typedef std::complex<T> type;
465 template <
typename T,
typename U>
466 struct ProductTypeImpl<
std::complex<T>,std::complex<U> >
468 typedef std::complex<typename ProductType<T,U>::type> type;
471 template <
typename U>
472 struct ProductTypeImpl<double,
std::complex<U> >
474 typedef std::complex<typename ProductType<double,U>::type> type;
477 template <
typename T>
478 struct ProductTypeImpl<
std::complex<T>,double>
480 typedef std::complex<typename ProductType<T,double>::type> type;
483 template <
typename U>
484 struct ProductTypeImpl<float,
std::complex<U> >
486 typedef std::complex<typename ProductType<float,U>::type> type;
489 template <
typename T>
490 struct ProductTypeImpl<
std::complex<T>,float>
492 typedef std::complex<typename ProductType<T,float>::type> type;
550 template <
typename T>
566 typedef long double type;
576 typedef unsigned int type;
581 typedef std::complex<T> type;
585 DEAL_II_NAMESPACE_CLOSE
static bool equal(const T *, const U *)
static bool equal(const T *p1, const T *p2)