Commit Graph

1559 Commits (d4e2281a09258ef69a7b91e1a9c9d148b72afde2)

Author SHA1 Message Date
roroberto 1429d9ec71
Added example to CP.61: Use an async() to spawn a concurrent task (#1557)
Added example to CP.61: Use an async() to spawn a concurrent task
6 years ago
Herb Sutter 6e72adc0fe
Casting away const isn't undefined behavior, but modifying a constant is (#1509)
* Casting away const isn't undefined behavior, but modifying a constant is

You can cast away `const` as much as you like, as long as you never write to variable.

* rewording for clarification
6 years ago
hsutter 2eb8ea9279 Tweaked #1516 one more time 6 years ago
hsutter fd857db583 Tweak to #1516 per editors call 6 years ago
kuzkry 745b0664c2
clarify that GSL semi-specification of some types does not reflect actual support of them (#1516) 6 years ago
hsutter dc8e49314f Tweaked PR #1553 per editors call 6 years ago
Kim Viggedal 153da17417
Merge I.2 and R.6 seem to address the same issue, (#1553)
thus I propose removing R.6 and moving some of its contents into I.2.
6 years ago
hsutter 9a4db6c1c4 Adopt the change suggested in PR #1556, just making the casing consistent the other way (lowercase) 6 years ago
hsutter b01d9e0d23 Updated MISRA entry with link, updating PR #1554 6 years ago
Mark Nelson 605a48ae03 Added two coding references (#1554)
* Added two commonly used coding guideline documents

* Update CppCoreGuidelines.md
6 years ago
hsutter f92c1c2eb3 Tweaked #1551
To adjust example comment and Enforcement per PR #1551 comments
6 years ago
Baptiste Thémine 164c0b3b5d Add code examples to CppCoreGuidelines ES.77 (#1551) 6 years ago
Hyuk Myeong 5c065f850c Fix typos (#1549)
* R.37 : it callees -> its callees
* ES.65 : a different part from the original paper
6 years ago
Sergey Zubkov c68a395830 [I.27] fix move ctor in the pimpl example (closes #1471) 6 years ago
Sergey Zubkov df94731290 update LLVM coding standards description, closes #1502 6 years ago
Bernd Ritter 778b44c2c9 Corrected link to noexcept anchor (#1559) 6 years ago
Sergey Zubkov 282ff88e57 fixes to pass travis checks 6 years ago
Sergey Zubkov 9e9950353a typos noted in comments to 2fdc696 6 years ago
shaneasd 1e371f7f86 Fix trivial recent typos (#1550) 6 years ago
Bjarne Stroustrup ad30d9ee16 Update CppCoreGuidelines.md
Clarified the enforcement of C.121 according to #1368
6 years ago
Bjarne Stroustrup 7db3ad84ff Update CppCoreGuidelines.md
REsolving #1500 with an explanatory note in the introduction.
6 years ago
Bjarne Stroustrup 2fdc6960b4 Update CppCoreGuidelines.md
Adding rule to resolve #1424
6 years ago
Bjarne Stroustrup a58ec3ee69 Update CppCoreGuidelines.md
To resolve #1356, cleaned up the text for non-rules, eliminating double negatives
6 years ago
Bjarne Stroustrup f370b1fa9e Update CppCoreGuidelines.md
Closed #1101
6 years ago
Bjarne Stroustrup b06e365c9f Modify ES.20 to address #1400 6 years ago
Bjarne Stroustrup 1fdd7e2869 testing
date change
6 years ago
Sergey Zubkov 93ab66d8da
[SF.9] singular/plural mismatch (closes #1545) 6 years ago
hsutter 54afca9318 Elaborated on PR #1539 6 years ago
Zachary Henkel 39b9ebdf86 Address items called out in Issue 1424 (#1539)
* Address items called out in Issue 1424

* Fix issues caught by CI

* Updates based on PR review
6 years ago
Zachary Henkel fc32070096 Address items called out in Issue 1418 (#1538) 6 years ago
Zachary Henkel cd478777c1 Allow return statements from case labels (#1537) 6 years ago
Mark Nelson 0363246c03 link to archived version of Collecting Shared Objects (#1530)
When a reference in the Bibliography is available online, it would seem to be nice to have a link. In this example, the original article was published in C/C++ User's Journal, with the content later ported to the DDJ web site. The DDJ site is no longer reliable, but a good copy exists in archive.org, and I've linked to it here.
6 years ago
shaneasd 56a941a7f8 Fix discussion link in C.36 (#1523) 6 years ago
johansin 3f70be9721 T.25: Fix number in exponential sequence. (#1526)
Otherwise rather suggests a quadratic growth.
6 years ago
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
6 years ago
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
6 years ago
Elviss Strazdins 148b1064da Correct the examples to match guideline NL.16 (#1505) 6 years ago
Mike B b59bb13f2e Update CppCoreGuidelines.md (#1510)
typo
6 years ago
Simon Daester 6a004e1288 Corrected variables in Init() to mx, my. (#1501)
It doesn't make sense otherwise
6 years ago
Jonathan Wakely e6b7108dd3 Reword how C11 Annex K functions are described (#1496)
Fixes #1491
6 years ago
hsutter f1b73602c1 Closes #1470 7 years ago
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
7 years ago
hsutter da61d9ad72 Closes #1466 7 years ago
hsutter 122cda0bd2 Closes #1451 7 years ago
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.
7 years ago
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
7 years ago
beinhaerter 96c14cced6 section T, minor stuff (#1484)
- added space between two sentences
- added missing closing bracket
- typo "of" -> "or"
7 years ago
beinhaerter 796ce80102 E section, different stuff (#1480)
- E.15: "of" -> "or"
- E.27: capitalization
7 years ago
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
7 years ago
beinhaerter 71a0419a1a C.145: add "see also" C.67 (#1460) 7 years ago
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
7 years ago
Werner Henze e7cdce445a SF.10: remove double `#include <vector>` from example 7 years ago
Sergey Zubkov d35d76c3e3 closes #1479 7 years ago
beinhaerter af69b85e10 same capitalization for "Technical Specification" on all occurances (#1482) 7 years ago
beinhaerter d46c678048 E.18: fix grammar (#1481) 7 years ago
beinhaerter dc72881cf3 ES.1: fixed wrong capitalization (#1468) 7 years ago
Tyler Young 5e636657d9 Fixes typo: "code based" -> "code bases" 7 years ago
beinhaerter fbc9db56f0 R.3: "a" -> "an" (#1465) 7 years ago
hsutter d8a6aaa40b Restored two more edits 7 years ago
hsutter 024f1a05dc Restored accidentally overwritten editorial changes 7 years ago
hsutter 514ac4487c Minor cleanup on the smart pointer concept, and addresses #1466 7 years ago
beinhaerter 85ae628765 Enum.2: typo/formatting (#1463) 7 years ago
beinhaerter fb320822fc typo in C.181: 'it' -> 'is' (#1462) 7 years ago
beinhaerter 0a58ed2bc3 C.150/C.151: fix compiler syntax error in Example (#1461)
- remove unnecessary space in section Reason
7 years ago
beinhaerter a70d903fde C.102: format note as text, not as code (#1459) 7 years ago
hg 1cd545aed5 Remove extra backtick in ES.23 (#1453) 7 years ago
hsutter 8eea7cef63 Closes #1445 7 years ago
hsutter a255fe23e0 Closes #1438 7 years ago
hsutter 10ff912f5c Closes #1432 7 years ago
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
7 years ago
shaneasd d456ccf274 Fix comment in C.128 example (#1449) 7 years ago
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
7 years ago
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
7 years ago
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.
7 years ago
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
7 years ago
Louis Cloete 6c92f514f4 Remove extra asterisk in example in C.60 (#1430)
closes #1429
7 years ago
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
7 years ago
Sergey Zubkov dbc554cbc5 update date 7 years ago
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
7 years ago
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
7 years ago
hsutter fc27313b75 Adopting fixes from PR 1411 7 years ago
hsutter 959b556aac Restored cached_computation description 7 years ago
Dave Smith 1a9a35d2d9 Tighten up CP.1 (#1405)
* Tighten up CP.1

* balanced verb usage in first sentence
* changed third sentence to "libraries not using threads", as I
  believe this was the original author's intended meaning.
* clarified "this" in fourth sentence
* cut wordiness of "thanks to the magic of cut-and-paste", as it
  added no value
* changed "Example" heading to "Example, bad"
* added "bad:" comment above statics in the example
* added an explanatory sentence immediately after the example
* changed "works perfectly in a single-threaded" after example to
  "works as intended in a single threaded".  Also balanced the
  structure of the two comma separated phrases inside this sentence.
* strengthened parenthetical explanation in second bullet of "could
  be made safe" section

* Correct grammar mistake pointed out by @cubbimew

* Remove specific cache details in CP.1 per @hsutter's request
7 years ago
hsutter 41b5bac211 Revert "Fixed typo in ES.22"
This reverts commit 976ee508a4.
7 years ago
hsutter 976ee508a4 Fixed typo in ES.22 7 years ago
Florian Thake 385199cc90 Added bad and good example to NR.5 in CppCoreGuidelines.md (#1401)
* Added bad and goof example to NR.5 in CppCoreGuidelines.md

Added bad and good example to NR.5 Don’t: Don’t do substantive work in a constructor; instead use two-phase initialization.
I think it could be suitable.

* adjusted coding style

* removed extra space

* removed one more whitespace

* removed spaces before note to make it a blank line

* made Cleanup method from bad example return void

* some changes after review comments

- removed try catch
- removed defaulted dtor
- changed int to size_t, removed check for even.
- Expects() for invariant check
- typo

* spell check adjustment

* moved comment up for met the line length

* changed variablename in good example

... they were named same after removed the try catch scope

* changed afer comments

- changed check_size() function to a static member function 
- fixed comment mentioning the default contract violation behavior.
7 years ago
Kyle 0f57785d2b C.129 Small fixes (#1406)
* C.129 Fix typos and conjugation

I noticed some grammatical errors in this section and fixed them to match my interpretation of the author's intention.

* One more fix

Pluralization
7 years ago
Aleksander 6a6321fcbf ES.49: added lvalue in std::forward description (#1404) 7 years ago
Aleksander 9f5a67fda7 ES.42: index in an example was not declared (#1403) 7 years ago
Paul Romano 1f6042f66c Fix typo in some of the NL rules, "thus rule" -> "this rule" (#1402) 7 years ago
hsutter 35cfe0c984 Closes #1397 7 years ago
hsutter 9275e7da09 Fixed typo in previous commit, closes #1395 7 years ago
hsutter 85e6aef5d6 Closes #1395 7 years ago
hsutter 274d65818d Closes #1392 7 years ago
hsutter 4b7cd81ad0 Closes #1392 7 years ago
Taewon Park 7ddf721500 Fix wrong <a> tags in Pro.bounds and Pro.lifetime (#1399)
Replaced "href" attribute to "name" of <a> tags in Pro.bounds and Pro.lifetime sections, to make the anchors to them work correctly
7 years ago
Sergey Zubkov 73f37745b1 fix typo 7 years ago
Saad 08659db9e1 MD typo fix (#1396) 7 years ago
hsutter c072184052 Closes #1370 7 years ago
hsutter 142fc6ad33 Closes #1367 7 years ago