kfr

Fast, modern C++ DSP framework, FFT, Sample Rate Conversion, FIR/IIR/Biquad Filters (SSE, AVX, AVX-512, ARM NEON)
Log | Files | Refs | README

commit d2fa0c48d4e0067ae9ecd6ffafee3d83bd487f0c
parent f0357d565c6efae154c2a08585ba276d802719fc
Author: d.levin256@gmail.com <d.levin256@gmail.com>
Date:   Mon,  5 Sep 2016 11:59:03 +0300

Include <vector> and implement addressof from <memory>

Diffstat:
Minclude/kfr/base/types.hpp | 12+++++++++++-
Minclude/kfr/cometa/array.hpp | 1+
2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/include/kfr/base/types.hpp b/include/kfr/base/types.hpp @@ -513,6 +513,16 @@ using enable_if_not_f = enable_if<typeclass<T> != datatype::f, R>; namespace internal { +#ifdef CMT_COMPILER_CLANG +#define builtin_addressof(x) __builtin_addressof(x) +#else +template <class T> +inline T* builtin_addressof(T& arg) +{ + return reinterpret_cast<T*>(&const_cast<char&>(reinterpret_cast<const volatile char&>(arg))); +} +#endif + CMT_INLINE f32 builtin_sqrt(f32 x) { return __builtin_sqrtf(x); } CMT_INLINE f64 builtin_sqrt(f64 x) { return __builtin_sqrt(x); } CMT_INLINE f80 builtin_sqrt(f80 x) { return __builtin_sqrtl(x); } @@ -524,7 +534,7 @@ CMT_INLINE void builtin_memset(void* dest, int val, size_t size) { __builtin_mem template <typename T1> CMT_INLINE void zeroize(T1& value) { - builtin_memset(static_cast<void*>(std::addressof(value)), 0, sizeof(T1)); + builtin_memset(static_cast<void*>(builtin_addressof(value)), 0, sizeof(T1)); } } diff --git a/include/kfr/cometa/array.hpp b/include/kfr/cometa/array.hpp @@ -5,6 +5,7 @@ #include "../cometa.hpp" #include <array> +#include <vector> #include <iterator> namespace cometa