diff options
author | Oliver Reiche <oliver.reiche@huawei.com> | 2022-06-14 09:57:50 +0200 |
---|---|---|
committer | Oliver Reiche <oliver.reiche@huawei.com> | 2022-07-04 16:06:47 +0200 |
commit | 19770d5940d2f772532658d0c12ed64709681a55 (patch) | |
tree | 15b645e889c33978ef9f2ca91307b5b17ad4dc7f /src | |
parent | 4f27a981f21defdc467b458b91e4961a6160533f (diff) | |
download | justbuild-19770d5940d2f772532658d0c12ed64709681a55.tar.gz |
Improve move semantics with smart pointers
Diffstat (limited to 'src')
-rw-r--r-- | src/buildtool/build_engine/expression/expression_ptr.cpp | 4 | ||||
-rw-r--r-- | src/buildtool/build_engine/expression/expression_ptr.hpp | 3 | ||||
-rw-r--r-- | src/buildtool/build_engine/target_map/target_map.cpp | 2 |
3 files changed, 3 insertions, 6 deletions
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<bool>(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<AnalysedTarget>((*std::move(result)).Result(), + std::make_shared<AnalysedTarget>(std::move(*result).Result(), std::move(actions), std::move(blobs), std::move(trees), |