Docs: Update py::kwargs example in function.rst to pass by reference #3038
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
A very common clang-tidy performance issue I have noticed is that py::dict is not trivially copyable, but I can't think of any case where where you want to actually create a shallow copy of the dict intentionally. Furthermore, not creating a shallow-copy of the dict would better match pythonic syntax in the C++ side. As such, I propose editing the documentation to have this be the default practice. There are probably a lot more areas where this could be improved, but here are the two most common pieces of code I see being copy and pasted around.
As an aside, I'd recommend enabling the clang-tidy performance checks at some point to catch these issues in the tests and other places. Not that they are performance sensitive per say, but that they should show best coding practices.
Suggested changelog entry: