aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcoFalke <[email protected]>2017-08-24 20:59:06 -0400
committerMarcoFalke <[email protected]>2017-08-24 20:59:26 -0400
commit3f726c99f819f97f2ab21b94d34c6b3129cd883a (patch)
tree9e61c87b4dbd57ed031140a909cf3fbea01cb5a6
parentMerge #11108: Changing -txindex requires -reindex, not -reindex-chainstate (diff)
parentAdd recommendation: By default, declare single-argument constructors `explicit` (diff)
downloaddiscoin-3f726c99f819f97f2ab21b94d34c6b3129cd883a.tar.xz
discoin-3f726c99f819f97f2ab21b94d34c6b3129cd883a.zip
Merge #11112: [developer-notes] By default, declare single-argument constructors "explicit"
f1708ef89 Add recommendation: By default, declare single-argument constructors `explicit` (practicalswift) Pull request description: This is a follow-up to the now merged #10969. Add recommendation: > By default, declare single-argument constructors `explicit`. > > - *Rationale*: This is a precaution to avoid unintended conversions that might arise when single-argument constructors are used as implicit conversion functions. > Tree-SHA512: 1ceb1008a7863ebd0f09ba9c06b4e28b3b03265d7381f9d0c8bd4be1663d5d0392de0ecd811027aa27c0d962723674b245b3c165a437942a776f3525db39d36b
-rw-r--r--doc/developer-notes.md6
-rw-r--r--src/test/addrman_tests.cpp2
2 files changed, 7 insertions, 1 deletions
diff --git a/doc/developer-notes.md b/doc/developer-notes.md
index ad15aa662..2f04d6ee6 100644
--- a/doc/developer-notes.md
+++ b/doc/developer-notes.md
@@ -332,6 +332,12 @@ C++ data structures
- *Rationale*: Ensure determinism by avoiding accidental use of uninitialized
values. Also, static analyzers balk about this.
+- By default, declare single-argument constructors `explicit`.
+
+ - *Rationale*: This is a precaution to avoid unintended conversions that might
+ arise when single-argument constructors are used as implicit conversion
+ functions.
+
- Use explicitly signed or unsigned `char`s, or even better `uint8_t` and
`int8_t`. Do not use bare `char` unless it is to pass to a third-party API.
This type can be signed or unsigned depending on the architecture, which can
diff --git a/src/test/addrman_tests.cpp b/src/test/addrman_tests.cpp
index 2ad22d34a..7be29c6d6 100644
--- a/src/test/addrman_tests.cpp
+++ b/src/test/addrman_tests.cpp
@@ -15,7 +15,7 @@ class CAddrManTest : public CAddrMan
uint64_t state;
public:
- CAddrManTest(bool makeDeterministic = true)
+ explicit CAddrManTest(bool makeDeterministic = true)
{
state = 1;