[libcamera-devel] [PATCH 4/4] Documentation: coding-style: Discourage move on shared_ptr<>

Jacopo Mondi jacopo at jmondi.org
Tue Feb 12 23:20:21 CET 2019


Using std::move() on return statement of a method or on the its returned
value prevents the compiler from implementing copy-elision. Discourage
that in the coding style document.

Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
 Documentation/coding-style.rst | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/Documentation/coding-style.rst b/Documentation/coding-style.rst
index 51afef27e9c1..065fbe0ab07b 100644
--- a/Documentation/coding-style.rst
+++ b/Documentation/coding-style.rst
@@ -151,6 +151,10 @@ reference for the duration of the operation that borrows it.
      never by reference. The caller can decide whether to transfer its ownership
      of the std::shared_ptr<> with std::move() or retain it. The callee shall
      use std::move() if it needs to store the shared pointer.
+   * Do not over-use std::move(), as it may prevent copy-elision. In particular
+     a function returning a std::shared_ptr<> value shall not use std::move() in
+     its return statements, and its callers shall not wrap the function call
+     with std::move().
    * Borrowed references to shared objects are passed as references to the
      objects themselves, not to the std::shared_ptr<>, with the same rules as
      for single owner objects.
-- 
2.20.1



More information about the libcamera-devel mailing list