diff options
| author | MarcoFalke <[email protected]> | 2017-08-24 20:59:06 -0400 |
|---|---|---|
| committer | MarcoFalke <[email protected]> | 2017-08-24 20:59:26 -0400 |
| commit | 3f726c99f819f97f2ab21b94d34c6b3129cd883a (patch) | |
| tree | 9e61c87b4dbd57ed031140a909cf3fbea01cb5a6 /doc | |
| parent | Merge #11108: Changing -txindex requires -reindex, not -reindex-chainstate (diff) | |
| parent | Add recommendation: By default, declare single-argument constructors `explicit` (diff) | |
| download | discoin-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
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/developer-notes.md | 6 |
1 files changed, 6 insertions, 0 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 |