Skip to content

Commit

Permalink
Add recommendation: By default, declare single-argument constructors …
Browse files Browse the repository at this point in the history
…`explicit`
  • Loading branch information
practicalswift committed Aug 22, 2017
1 parent 3e55f13 commit f1708ef
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 1 deletion.
6 changes: 6 additions & 0 deletions doc/developer-notes.md
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/test/addrman_tests.cpp
Expand Up @@ -15,7 +15,7 @@ class CAddrManTest : public CAddrMan
uint64_t state;

public:
CAddrManTest(bool makeDeterministic = true)
explicit CAddrManTest(bool makeDeterministic = true)
{
state = 1;

Expand Down

0 comments on commit f1708ef

Please sign in to comment.