Commit Graph

1979 Commits

Author SHA1 Message Date
hsutter
2eb8ea9279 Tweaked #1516 one more time 2020-01-30 11:27:07 -08:00
hsutter
fd857db583 Tweak to #1516 per editors call 2020-01-30 11:24:43 -08:00
kuzkry
745b0664c2
clarify that GSL semi-specification of some types does not reflect actual support of them (#1516) 2020-01-30 11:23:29 -08:00
hsutter
dc8e49314f Tweaked PR #1553 per editors call 2020-01-30 11:21:00 -08:00
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.
2020-01-30 11:19:22 -08:00
hsutter
9a4db6c1c4 Adopt the change suggested in PR #1556, just making the casing consistent the other way (lowercase) 2020-01-16 11:52:25 -08:00
hsutter
b01d9e0d23 Updated MISRA entry with link, updating PR #1554 2020-01-16 11:45:48 -08:00
Mark Nelson
605a48ae03 Added two coding references (#1554)
* Added two commonly used coding guideline documents

* Update CppCoreGuidelines.md
2020-01-16 11:44:50 -08:00
hsutter
f92c1c2eb3 Tweaked #1551
To adjust example comment and Enforcement per PR #1551 comments
2020-01-16 11:28:21 -08:00
Baptiste Thémine
164c0b3b5d Add code examples to CppCoreGuidelines ES.77 (#1551) 2020-01-16 11:26:23 -08:00
Hyuk Myeong
5c065f850c Fix typos (#1549)
* R.37 : it callees -> its callees
* ES.65 : a different part from the original paper
2020-01-16 11:05:11 -08:00
Sergey Zubkov
c68a395830 [I.27] fix move ctor in the pimpl example (closes #1471) 2020-01-15 16:38:44 -05:00
Sergey Zubkov
df94731290 update LLVM coding standards description, closes #1502 2020-01-15 16:34:23 -05:00
Bernd Ritter
778b44c2c9 Corrected link to noexcept anchor (#1559) 2020-01-09 13:01:02 -05:00
Sergey Zubkov
282ff88e57 fixes to pass travis checks 2019-12-20 16:37:06 -05:00
Sergey Zubkov
9e9950353a typos noted in comments to 2fdc696 2019-12-20 16:26:14 -05:00
shaneasd
1e371f7f86 Fix trivial recent typos (#1550) 2019-12-20 16:23:25 -05:00
Bjarne Stroustrup
ad30d9ee16 Update CppCoreGuidelines.md
Clarified the enforcement of C.121 according to #1368
2019-12-08 17:36:43 -05:00
Bjarne Stroustrup
7db3ad84ff Update CppCoreGuidelines.md
REsolving #1500 with an explanatory note in the introduction.
2019-12-08 15:09:15 -05:00
Bjarne Stroustrup
2fdc6960b4 Update CppCoreGuidelines.md
Adding rule to resolve #1424
2019-12-08 14:54:19 -05:00
Bjarne Stroustrup
a58ec3ee69 Update CppCoreGuidelines.md
To resolve #1356, cleaned up the text for non-rules, eliminating double negatives
2019-12-08 14:16:39 -05:00
Bjarne Stroustrup
f370b1fa9e Update CppCoreGuidelines.md
Closed #1101
2019-12-08 13:31:09 -05:00
Bjarne Stroustrup
b06e365c9f Modify ES.20 to address #1400 2019-12-08 12:19:24 -05:00
Bjarne Stroustrup
1fdd7e2869 testing
date change
2019-12-06 10:05:14 -05:00
Sergey Zubkov
93ab66d8da
[SF.9] singular/plural mismatch (closes #1545) 2019-12-03 10:15:00 -05:00
hsutter
3528dd91ef Updated Lifetime spec to 1.1
Major changes in R1:
- Added SharedOwner concept.
- Added “Diagnostic sensitivity options” section to define a way to
start with zero-false-positive warnings and increasingly opt into
additional diagnostics.
- Changed function annotation syntax to contract-like pre(cond) and
post(cond) syntax, and added that they are implicitly inherited by
virtual overrides.
- Renamed static to global to reduce confusion with the keyword.
- Refined default lifetimes semantics of Pointer-to-Pointer parameters.
2019-11-22 10:31:54 -08:00
hsutter
54afca9318 Elaborated on PR #1539 2019-11-21 11:33:10 -08:00
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
2019-11-21 11:28:59 -08:00
Zachary Henkel
fc32070096 Address items called out in Issue 1418 (#1538) 2019-11-21 11:12:41 -08:00
Zachary Henkel
cd478777c1 Allow return statements from case labels (#1537) 2019-11-21 11:10:08 -08:00
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.
2019-10-15 14:05:13 -04:00
shaneasd
56a941a7f8 Fix discussion link in C.36 (#1523) 2019-10-10 12:30:51 -06:00
johansin
3f70be9721 T.25: Fix number in exponential sequence. (#1526)
Otherwise rather suggests a quadratic growth.
2019-10-08 17:28:55 -04:00
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