Commit Graph

1796 Commits

Author SHA1 Message Date
Taewon Park
ef78ef4d88 Fix wrong markdown links in E.15 (#1522)
Fixed markdown links in E.15 which direct readers to Github repository, not currently viewing page
2019-09-27 10:45:07 -04:00
Tom Lankhorst
fbb2fc6bb5 Update Rper-simple example comment (#1508)
The example that is 'intended' to be faster is actually faster on clang 8 /w -O3, and marginally slower than the 'simple' example on GCC 9.1 /w -O3
http://quick-bench.com/DrXvcvhjS1zDmMkgxrzIjbMByYA
http://quick-bench.com/03VXPgDSxiMAmZMItiEA0iwTJgM
2019-09-05 12:09:41 -06:00
Elviss Strazdins
148b1064da Correct the examples to match guideline NL.16 (#1505) 2019-09-05 12:08:06 -06:00
Mike B
b59bb13f2e Update CppCoreGuidelines.md (#1510)
typo
2019-09-04 15:55:00 -04:00
Simon Daester
6a004e1288 Corrected variables in Init() to mx, my. (#1501)
It doesn't make sense otherwise
2019-08-19 11:28:48 -04:00
Jonathan Wakely
e6b7108dd3 Reword how C11 Annex K functions are described (#1496)
Fixes #1491
2019-08-15 11:04:21 -07:00
hsutter
f1b73602c1 Closes #1470 2019-08-08 11:46:55 -07:00
beinhaerter
1a88c5a537 make the sample in Sd-factory and C.50 compileable (closes #1205, #1488) (#1489)
* make the sample in Sd-factory compileable (closes #1488)

- make the sample in Sd-factory compileable
  - fixed wrong capitalization: create/Create -> create
  - `make_shared` cannot access protected constructors, so made them public. To still have access protection introduced a protected `class Token` in each class. That token can only be created by the class itself (and derived classes) and needs to be passed to the constructor.
- changed order: `public` first, then `protected`
- same sample for C.50 and Sd-factory
- removed spurious "see Item 49.1" as it is unclear what this means

* line length

* tabs -> spaces

* spelling

* input from cubbimew

- added back in Item 49.1
- added link for items as suggested ("in [SuttAlex05](#SuttAlex05)")

* changed link to Item 49.1 to link to C.82
2019-08-07 16:28:52 -04:00
hsutter
da61d9ad72 Closes #1466 2019-08-01 12:00:53 -07:00
hsutter
122cda0bd2 Closes #1451 2019-08-01 11:52:27 -07:00
Herb Sutter
5fdfb20b76
Closes #1446 (#1448)
This PR affirms that all virtual functions, *including destructors*,
should be declared exactly one of `virtual`, `override`, or `final`, and
takesa pass through the document to make the examples and guidance
consistent with that.

Of course a virtual destructor is a virtual function: It behaves
polymorphically, and it has a vtable entry that can be overwritten ==
overridden in a derived class exactly the same as any other derived
virtual override. See also [class.virtual]/7: "Even though destructors
are not inherited, a destructor in a derived class overrides a base
class destructor declared virtual; see [class.dtor] and [class.free]."

However, the following exception text currently appears in C.128:

> If a base class destructor is declared `virtual`, one should avoid
declaring derived class destructors  `virtual` or `override`. Some code
base and tools might insist on `override` for destructors, but that is
not the recommendation of these guidelines.

... but this exception is (a) not well-founded, and (b) inconsistent
with the Guidelines' practice in other examples and with the rationale a
few lines earlier for C.128 itself.

Re (a):

- The exception is overly broad: The rationale given for this exception
is entirely against marking destructors `override` (not `virtual`). So
clearly the exception to write neither keyword is too broad: At most,
the exception should be to write `virtual` rather than `override`.
- Explicit `virtual` is primarily for class users, not class authors:
The arguments given in #721 favoring this exception are from the
viewpoint of the implementation of the function (even then, the
arguments are debatable and debated). But `virtual`, `override`, and
`final` are primarily for the far larger audience of *class users and
call sites* of the function, for whom of course we should document each
declared function that is polymorphic, *especially* the destructor --
this tells calling code whether the function is safe to call through a
(smart or built-in) pointer or reference to base, which will nearly
always be the case for such types. We should not make the reader of the
code go way to look in the base classes to figure out whether a function
declared in this class is virtual or not -- the reason this Item exists
is primarily to avoid that implicit virtual antipattern via convention
and automated enforcement. For class users, all virtual functions
including destructors are equally polymorphic.

Re (b): The Guidelines already don't follow this. For instance, two
Items later (in C.130) we have this example that correctly uses
`override`:

~~~
virtual ~D() override;
~~~

... though per C.128 it should not also specify `virtual` (also fixed in
this PR).

Finally, the exception also contradicts the rationale given earlier in
the same Item.
2019-08-01 11:50:55 -07:00
beinhaerter
d636a1bc5f section_sl, different stuff (#1487)
- typo "a" -> "as"
- added "???" to mark incomplete sentence
- typo "than" -> "that"
- "scanf using s" -> "scanf using %s" (same as for printf)
- added missing comma
2019-08-01 11:24:18 -07:00
beinhaerter
96c14cced6 section T, minor stuff (#1484)
- added space between two sentences
- added missing closing bracket
- typo "of" -> "or"
2019-08-01 11:23:19 -07:00
beinhaerter
796ce80102 E section, different stuff (#1480)
- E.15: "of" -> "or"
- E.27: capitalization
2019-08-01 11:22:26 -07:00
beinhaerter
b80ac8bc60 ES section, different stuff (#1473)
* ES section, different stuff

- ES.26: same capitalization for all function names in example
- ES.34: fix wrong formatting (first line of example was formatted as text)
- ES.46: corrected value in comment (new value read out in debugger)
- ES.46: Capitalize Enforcement bullet points (as in other ES rules)
- ES.65: fix formatting of code after list (compare https://meta.stackexchange.com/a/34325/172717)

* review-feedback from jwakely

and:
- ES.46/ES.47: added period at end of sentence
2019-08-01 11:21:02 -07:00
beinhaerter
71a0419a1a C.145: add "see also" C.67 (#1460) 2019-08-01 11:19:16 -07:00
Chris Guzak
2895429f55 exception in SF.7 for issue 1440, allow std::literals (#1457)
* exception in SF.7 for issue 1440, allow std::literals

* PR feedback

* add UDLs to spelling dictionary

* put in alpha order
2019-08-01 11:16:46 -07:00
Werner Henze
e7cdce445a SF.10: remove double #include <vector> from example 2019-07-29 10:25:03 +01:00
Sergey Zubkov
d35d76c3e3 closes #1479 2019-07-23 09:10:19 -04:00
beinhaerter
af69b85e10 same capitalization for "Technical Specification" on all occurances (#1482) 2019-07-23 09:06:33 -04:00
beinhaerter
d46c678048 E.18: fix grammar (#1481) 2019-07-22 16:00:36 -04:00
cclauss
622568271a Travis CI: (#1469)
[Travis are now recommending removing the __sudo__ tag](https://blog.travis-ci.com/2018-11-19-required-linux-infrastructure-migration).

"_If you currently specify __sudo: false__ in your __.travis.yml__, we recommend removing that configuration_"
2019-07-09 17:07:32 -04:00
beinhaerter
dc72881cf3 ES.1: fixed wrong capitalization (#1468) 2019-07-09 17:06:58 -04:00
Tyler Young
5e636657d9 Fixes typo: "code based" -> "code bases" 2019-07-09 10:12:50 +01:00
beinhaerter
fbc9db56f0 R.3: "a" -> "an" (#1465) 2019-07-08 10:20:39 +01:00
hsutter
d8a6aaa40b Restored two more edits 2019-07-03 08:33:09 -07:00
hsutter
024f1a05dc Restored accidentally overwritten editorial changes 2019-07-02 14:29:25 -07:00
hsutter
514ac4487c Minor cleanup on the smart pointer concept, and addresses #1466 2019-07-02 12:56:31 -07:00
beinhaerter
85ae628765 Enum.2: typo/formatting (#1463) 2019-07-01 17:00:07 -04:00
beinhaerter
fb320822fc typo in C.181: 'it' -> 'is' (#1462) 2019-07-01 20:16:38 +01:00
beinhaerter
0a58ed2bc3 C.150/C.151: fix compiler syntax error in Example (#1461)
- remove unnecessary space in section Reason
2019-07-01 09:56:53 -04:00
beinhaerter
a70d903fde C.102: format note as text, not as code (#1459) 2019-07-01 09:55:50 -04:00
Jonathan Wakely
dbbc2589b2 Remove stray .eml files 2019-06-26 15:56:10 +01:00
hg
1cd545aed5 Remove extra backtick in ES.23 (#1453) 2019-06-25 13:30:38 -04:00
hsutter
8eea7cef63 Closes #1445 2019-06-20 11:54:25 -07:00
hsutter
a255fe23e0 Closes #1438 2019-06-20 11:40:26 -07:00
hsutter
10ff912f5c Closes #1432 2019-06-20 11:34:16 -07:00
Joshua T. Fisher
1d54448aeb Editing P.9: "Don't waste time or space" Example Text (#1439)
* Initial rewrite

* Fixed a couple of inaccuracies and minor grammar mistakes

Thanks to twitter user @lunasorcery for these changes!

* Added toLower to dictionary
2019-06-20 11:12:29 -07:00
shaneasd
d456ccf274 Fix comment in C.128 example (#1449) 2019-06-18 10:22:50 -04:00
beinhaerter
4b414458cf I.13: grammar and hint to std::string_view (#1443)
- "a C-style, zero-terminated strings" is wrong, it must be either "C-style, zero-terminated strings" or "a C-style, zero-terminated string"
- added hint to `std::string_view
2019-06-13 08:38:55 -04:00
beinhaerter
040ea419cc I.10: structured bindings is now available (#1442)
- C++17 is already available
- synchronize with F.21:
  - put quotes around "structured bindings"
  - remove link to proposal
2019-06-13 08:38:09 -04:00
Herb Sutter
8a707c5274
DO credit 2019-06-08 14:06:30 -07:00
Herb Sutter
5d65a37863
Added DO credit 2019-06-08 14:05:34 -07:00
alexcamposruiz
2d40c3ac2c Add example code for T.48 (#1422)
* Add example code for T.48

* Fix whitespace in end of line

* Use better syntax for concept constraint

* Revert "Use better syntax for concept constraint"

This reverts commit f071920d7f.
2019-05-30 11:21:43 -07:00
jkorinth
4c35d4c022 Fix C.120 good example (#1426)
C.120 has a good example which violates C.128 by specifying both virtual and override for methods.
closes #1425
2019-05-28 11:11:33 -04:00
Louis Cloete
6c92f514f4 Remove extra asterisk in example in C.60 (#1430)
closes #1429
2019-05-28 09:01:27 -04:00
Louis Cloete
29dedc49af Inserts a missing backtick in C.49 (#1428)
Below heading "Example, better still" there was a missing backtick after gsl::string_span
2019-05-20 08:14:08 +01:00
Sergey Zubkov
dbc554cbc5 update date 2019-05-02 14:53:28 -04:00
Herb Sutter
9948bdc157
Update ES.23 to allow = initialiization (#1416)
* Update ES.23 to allow = initialiization

* Silencing Travis

* Changed title back to original, it's fine

* Add note about explicit
2019-05-02 11:47:00 -07:00
Dave Smith
a9242c8dae Improve A.all (#1413)
* reword the A.1 rule title
* add candidate content for the A.1 rule
* make minor improvements to the A.2 note
* simplify wording in the first bullet of A.4's Reason
2019-05-02 11:18:07 -07:00