commit bcb745250083661b93e80a721bbfe384db06efff
parent 3d0b71a3e6e5a5f26527d4eb8d175ef9078aee00
Author: [email protected] <[email protected]>
Date: Wed, 20 Jul 2016 13:45:59 +0300
use std::complex if defined KFR_STD_COMPLEX
Diffstat:
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/include/kfr/base/complex.hpp b/include/kfr/base/complex.hpp
@@ -38,8 +38,19 @@
#pragma clang diagnostic ignored "-Winaccessible-base"
#endif
+#ifdef KFR_STD_COMPLEX
+#include <complex>
+#endif
+
namespace kfr
{
+#ifdef KFR_STD_COMPLEX
+
+template <typename T>
+using complex = std::complex<T>;
+
+#else
+#ifndef KFR_CUSTOM_COMPLEX
template <typename T>
struct complex
@@ -69,6 +80,9 @@ struct complex
T im;
};
+#endif
+#endif
+
using c32 = complex<f32>;
using c64 = complex<f64>;
using cbase = complex<fbase>;
@@ -205,9 +219,9 @@ constexpr KFR_INLINE vec<T, N> real(const vec<complex<T>, N>& value)
}
template <typename T>
-using realtype = decltype(real(std::declval<T>()));
+using realtype = decltype(kfr::real(std::declval<T>()));
template <typename T>
-using realftype = ftype<decltype(real(std::declval<T>()))>;
+using realftype = ftype<decltype(kfr::real(std::declval<T>()))>;
KFR_FN(real)
template <typename E1, KFR_ENABLE_IF(is_input_expression<E1>::value)>
@@ -600,7 +614,7 @@ struct compound_type_traits<kfr::complex<T>>
template <typename U>
using deep_rebind = kfr::complex<cometa::deep_rebind<subtype, U>>;
- static constexpr const subtype& at(const kfr::complex<T>& value, size_t index)
+ static constexpr subtype at(const kfr::complex<T>& value, size_t index)
{
return index == 0 ? value.real() : value.imag();
}