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:
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