From 20a67d78bca41516feac6e1fb2b3ed6e8e1635ed Mon Sep 17 00:00:00 2001 From: owent Date: Mon, 28 Nov 2022 19:46:20 +0800 Subject: [PATCH 1/2] Fix type mismatch when move `nostd::shared_ptr` Signed-off-by: owent --- api/include/opentelemetry/nostd/shared_ptr.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/api/include/opentelemetry/nostd/shared_ptr.h b/api/include/opentelemetry/nostd/shared_ptr.h index e1eac61561..88eeb32ef7 100644 --- a/api/include/opentelemetry/nostd/shared_ptr.h +++ b/api/include/opentelemetry/nostd/shared_ptr.h @@ -56,7 +56,9 @@ class shared_ptr typename std::enable_if::value>::type * = nullptr> void MoveTo(typename shared_ptr::PlacementBuffer &buffer) noexcept { - new (buffer.data) shared_ptr_wrapper{std::move(this->ptr_)}; + using other_shared_ptr_wrapper = typename shared_ptr::shared_ptr_wrapper; + new (buffer.data) + other_shared_ptr_wrapper{std::move(std::static_pointer_cast(this->ptr_))}; } virtual pointer Get() const noexcept { return ptr_.get(); } From a49e499e303c0d0297cec8fcf5d9c281fffd9e34 Mon Sep 17 00:00:00 2001 From: owent Date: Mon, 28 Nov 2022 20:16:29 +0800 Subject: [PATCH 2/2] Fix unit test Signed-off-by: owent --- api/include/opentelemetry/nostd/shared_ptr.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/api/include/opentelemetry/nostd/shared_ptr.h b/api/include/opentelemetry/nostd/shared_ptr.h index 88eeb32ef7..7afc30f9be 100644 --- a/api/include/opentelemetry/nostd/shared_ptr.h +++ b/api/include/opentelemetry/nostd/shared_ptr.h @@ -57,8 +57,7 @@ class shared_ptr void MoveTo(typename shared_ptr::PlacementBuffer &buffer) noexcept { using other_shared_ptr_wrapper = typename shared_ptr::shared_ptr_wrapper; - new (buffer.data) - other_shared_ptr_wrapper{std::move(std::static_pointer_cast(this->ptr_))}; + new (buffer.data) other_shared_ptr_wrapper{std::move(this->ptr_)}; } virtual pointer Get() const noexcept { return ptr_.get(); }