aboutsummaryrefslogtreecommitdiffstats
path: root/docs/checks/README-function-args-by-ref.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/checks/README-function-args-by-ref.md')
-rw-r--r--docs/checks/README-function-args-by-ref.md11
1 files changed, 11 insertions, 0 deletions
diff --git a/docs/checks/README-function-args-by-ref.md b/docs/checks/README-function-args-by-ref.md
new file mode 100644
index 00000000..d755bfbc
--- /dev/null
+++ b/docs/checks/README-function-args-by-ref.md
@@ -0,0 +1,11 @@
+# function-args-by-ref
+
+Warns when you should be passing by const-ref.
+Types with sizeof > 16 bytes [1] or types which are not trivially-copyable [2] or not trivially-destructible [3] should be passed by ref. A rule of thumb is that if passing by value would trigger copy-ctor and/or dtor then pass by ref instead.
+
+This check will ignore shared pointers, you're on your own. Most of the times passing shared pointers by const-ref is the best thing to do, but occasionally that will lead to crashes if you're in a method that calls something else that makes the shared pointer ref count go down to zero.
+
+
+- [1] <http://www.macieira.org/blog/2012/02/the-value-of-passing-by-value/>
+- [2] <http://en.cppreference.com/w/cpp/concept/TriviallyCopyable>
+- [3] <http://www.cplusplus.com/reference/type_traits/is_trivially_destructible/>