11 #ifndef __utlTypeinfo_h 12 #define __utlTypeinfo_h 15 #include <type_traits> 32 template<
bool B,
class T,
class F>
60 std::is_same<T, std::complex<double>>::value, double,
69 template<
typename T,
typename t>
75 template<
class T,
typename t>
83 template<
typename T,
typename t>
86 static_assert(::std::is_scalar<T>::value
87 || ::std::is_same<T,std::complex<double>>::value
88 || ::std::is_same<T,std::complex<float>>::value,
"T must be a scalar or std::complex<double> or std::complex<float>");
89 static_assert(::std::is_scalar<t>::value
90 || ::std::is_same<t,std::complex<double>>::value
91 || ::std::is_same<t,std::complex<float>>::value,
"t must be a scalar or std::complex<double> or std::complex<float>");
105 inline std::string
Demangle(
const char *name)
108 std::unique_ptr<char, void(*)(void*)> uptr { abi::__cxa_demangle(name, NULL, NULL, &status), std::free };
109 return status == 0 ? uptr.get() : name;
129 return TypeName<T>();
conditional_t< std::is_same< T, std::complex< double > >::value, double, conditional_t< std::is_same< T, std::complex< float > >::value, float, T > > type
typename remove_complex< T >::type remove_complex_t
float type which can be coverted to
typename::std::common_type< T... >::type common_type_t
typename::std::remove_reference< T >::type remove_reference_t
typename Superset< T, t >::type superset_t
std::string Demangle(const char *name)
typename::std::conditional< B, T, F >::type conditional_t
typename::std::remove_const< T >::type remove_const_t
conditional_t< std::is_scalar< T >::value &&std::is_scalar< t >::value, double, std::complex< double > > type