Browse Source

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
0.16
MarcoFalke 7 years ago
parent
commit
3f726c99f8
No known key found for this signature in database
GPG Key ID: D2EA4850E7528B25
  1. 6
      doc/developer-notes.md
  2. 2
      src/test/addrman_tests.cpp

6
doc/developer-notes.md

@ -332,6 +332,12 @@ C++ data structures @@ -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

2
src/test/addrman_tests.cpp

@ -15,7 +15,7 @@ class CAddrManTest : public CAddrMan @@ -15,7 +15,7 @@ class CAddrManTest : public CAddrMan
uint64_t state;
public:
CAddrManTest(bool makeDeterministic = true)
explicit CAddrManTest(bool makeDeterministic = true)
{
state = 1;

Loading…
Cancel
Save