1 #ifndef SOPT_REAL_TYPE_H
2 #define SOPT_REAL_TYPE_H
4 #include "sopt/config.h"
12 template <
typename T,
typename Enable =
void>
27 static constexpr
bool value =
sizeof(test<Derived>(
nullptr)) ==
sizeof(
HaveNot);
31 struct HasValueType<T, typename std::enable_if<std::is_fundamental<T>::value>::type>
34 template <typename T, bool = details::HasValueType<T>::value>
41 template <typename T, bool = has_value_type<T>::value>
58 template <
typename T,
typename SP =
void>
62 struct is_complex<std::complex<T>, void> :
public std::true_type {};
Detects whether a class contains a value_type type.
typename underlying_value_type< typename T::value_type >::type type
Computes inner-most element type.
static Have & test(typename U::value_type *)
static constexpr bool value
static HaveNot & test(U *)
True if underlying type is complex.