isce3 0.25.0
Loading...
Searching...
No Matches
TypeTraits.h
1#pragma once
2
3#include <complex>
4#include <type_traits>
5
6namespace isce3 {
7
8template<class> struct is_floating_or_complex : public std::false_type {};
9template<> struct is_floating_or_complex<float> : public std::true_type {};
10template<> struct is_floating_or_complex<double> : public std::true_type {};
11template<> struct is_floating_or_complex<std::complex<float>> : public std::true_type {};
12template<> struct is_floating_or_complex<std::complex<double>> : public std::true_type {};
13// (we currently don't allow long-doubles)
14
15template<class T>
16static constexpr bool is_floating_or_complex_v = is_floating_or_complex<T>::value;
17
18
19template<class T> using enable_if_floating_or_complex =
20 std::enable_if<is_floating_or_complex_v<T>, T>;
21template<class T> using enable_if_floating_or_complex_t =
22 typename enable_if_floating_or_complex<T>::type;
23
24template <typename T> struct real { using type = T; };
25template <typename T> struct real <std::complex<T>> { using type = T; };
26
27template <typename T> struct complx { using type = std::complex<T>; };
28template <typename T> struct complx <std::complex<T>> { using type = std::complex<T>; };
29
30template<typename T>
31struct is_complex : std::false_type {};
32template<typename T>
33struct is_complex<std::complex<T>> : std::true_type {};
34template<typename T>
35static constexpr bool is_complex_v()
36{
38}
39
40} // namespace isce3
base interpolator is an abstract base class
Definition BinarySearchFunc.cpp:5
Definition TypeTraits.h:27
Definition TypeTraits.h:31
Definition TypeTraits.h:8
Definition TypeTraits.h:24

Generated for ISCE3.0 by doxygen 1.13.2.