From 19770d5940d2f772532658d0c12ed64709681a55 Mon Sep 17 00:00:00 2001 From: Oliver Reiche Date: Tue, 14 Jun 2022 09:57:50 +0200 Subject: Improve move semantics with smart pointers --- src/buildtool/build_engine/expression/expression_ptr.cpp | 4 ---- src/buildtool/build_engine/expression/expression_ptr.hpp | 3 ++- src/buildtool/build_engine/target_map/target_map.cpp | 2 +- 3 files changed, 3 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/buildtool/build_engine/expression/expression_ptr.cpp b/src/buildtool/build_engine/expression/expression_ptr.cpp index 9d249412..256e580b 100644 --- a/src/buildtool/build_engine/expression/expression_ptr.cpp +++ b/src/buildtool/build_engine/expression/expression_ptr.cpp @@ -5,10 +5,6 @@ ExpressionPtr::ExpressionPtr() noexcept : ptr_{Expression::kNone.ptr_} {} -auto ExpressionPtr::operator*() && -> Expression { - return *ptr_; -} - auto ExpressionPtr::operator[]( std::string const& key) const& -> ExpressionPtr const& { return (*ptr_)[key]; diff --git a/src/buildtool/build_engine/expression/expression_ptr.hpp b/src/buildtool/build_engine/expression/expression_ptr.hpp index aeca6287..d7e05923 100644 --- a/src/buildtool/build_engine/expression/expression_ptr.hpp +++ b/src/buildtool/build_engine/expression/expression_ptr.hpp @@ -34,8 +34,9 @@ class ExpressionPtr { auto operator=(ExpressionPtr&&) noexcept -> ExpressionPtr& = default; explicit operator bool() const { return static_cast(ptr_); } + [[nodiscard]] auto operator*() & -> Expression& { return *ptr_; } [[nodiscard]] auto operator*() const& -> Expression const& { return *ptr_; } - [[nodiscard]] auto operator*() && -> Expression; + [[nodiscard]] auto operator*() && -> Expression = delete; [[nodiscard]] auto operator->() const& -> Expression const* { return ptr_.get(); } diff --git a/src/buildtool/build_engine/target_map/target_map.cpp b/src/buildtool/build_engine/target_map/target_map.cpp index d15c1af4..e3f203a9 100644 --- a/src/buildtool/build_engine/target_map/target_map.cpp +++ b/src/buildtool/build_engine/target_map/target_map.cpp @@ -748,7 +748,7 @@ void withDependencies( return; } auto analysis_result = - std::make_shared((*std::move(result)).Result(), + std::make_shared(std::move(*result).Result(), std::move(actions), std::move(blobs), std::move(trees), -- cgit v1.2.3