From fbc67a54f379654b5d785940850cb9f4edb22c62 Mon Sep 17 00:00:00 2001 From: Jacopo Mondi Date: Tue, 12 Feb 2019 23:11:09 +0100 Subject: Documentation: coding-style: Discourage move on shared_ptr<> 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 Reviewed-by: Laurent Pinchart Signed-off-by: Jacopo Mondi --- Documentation/coding-style.rst | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'Documentation/coding-style.rst') diff --git a/Documentation/coding-style.rst b/Documentation/coding-style.rst index 51afef27..065fbe0a 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. -- cgit v1.2.1