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 32da8c189b16075e7aa41a1cccc5e026b7d3bc89
parent b2282cec2f181b7f0789f7526f86f613e2f6eb26
Author: d.levin256@gmail.com <d.levin256@gmail.com>
Date:   Mon, 18 Jul 2016 07:18:20 +0300

use allocate_shared instead of make_shared to consider alignment

Diffstat:
Minclude/kfr/expressions/pointer.hpp | 5+++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/include/kfr/expressions/pointer.hpp b/include/kfr/expressions/pointer.hpp @@ -44,7 +44,7 @@ struct expression_resource virtual void* instance() { return nullptr; } }; template <typename E> -struct expression_resource_impl : expression_resource +struct alignas(E) expression_resource_impl : expression_resource { expression_resource_impl(E&& e) noexcept : e(std::move(e)) {} virtual ~expression_resource_impl() {} @@ -56,8 +56,9 @@ private: template <typename E> std::shared_ptr<expression_resource> make_resource(E&& e) { + using T = expression_resource_impl<decay<E>>; return std::static_pointer_cast<expression_resource>( - std::make_shared<expression_resource_impl<decay<E>>>(std::move(e))); + std::allocate_shared<T>(allocator<T>(), std::move(e))); } template <typename T, size_t maxwidth = maximum_expression_width()>