Convert LaTeX-quotes to ordinary ASCII quotes.

Added missing backticks.
Removed extra }.
Consistent backticks for const added.
Typo fixed.
Missing equality signs in HTML-markup added.
This commit is contained in:
uli 2015-10-13 18:13:49 +02:00
parent 57a5446625
commit c3877a41af

View File

@ -1083,7 +1083,7 @@ Obviously, we cannot catch all errors through the static type system
##### Example, bad ##### Example, bad
In the following example, it is not clear from the interface what time_to_blink means: Seconds? Milliseconds? In the following example, it is not clear from the interface what `time_to_blink` means: Seconds? Milliseconds?
void blink_led(int time_to_blink) // bad - the unit is ambiguous void blink_led(int time_to_blink) // bad - the unit is ambiguous
{ {
@ -2429,7 +2429,7 @@ Hard to choose a cutover value for the size of the value returned.
##### Reason ##### Reason
When `TP` is a template type parameter, `TP&&` is a forwarding reference -- it both *ignores* and *preserves* const-ness and rvalue-ness. Therefore any code that uses a `T&&` is implicitly declaring that it itself doesn't care about the variable's const-ness and rvalue-ness (because it is ignored), but that intends to pass the value onward to other code that does care about const-ness and rvalue-ness (because it is preserved). When used as a parameter `TP&&` is safe because any temporary objects passed from the caller will live for the duration of the function call. A parameter of type `TP&&` should essentially always be passed onward via `std::forward` in the body of the function. When `TP` is a template type parameter, `TP&&` is a forwarding reference -- it both *ignores* and *preserves* `const`'ness and rvalue-ness. Therefore any code that uses a `T&&` is implicitly declaring that it itself doesn't care about the variable's `const`'-ness and rvalue-ness (because it is ignored), but that intends to pass the value onward to other code that does care about `const`'-ness and rvalue-ness (because it is preserved). When used as a parameter `TP&&` is safe because any temporary objects passed from the caller will live for the duration of the function call. A parameter of type `TP&&` should essentially always be passed onward via `std::forward` in the body of the function.
##### Example ##### Example
@ -2543,7 +2543,7 @@ It's self-documenting. A `&` parameter could be either in/out or out-only.
##### Enforcement ##### Enforcement
Flag non-const reference parameters that are not read before being written to and are a type that could be cheaply returned. Flag non-`const` reference parameters that are not read before being written to and are a type that could be cheaply returned.
### <a name="Rf-T-multi"></a> F.41: Prefer to return tuples to multiple out-parameters ### <a name="Rf-T-multi"></a> F.41: Prefer to return tuples to multiple out-parameters
@ -4388,8 +4388,6 @@ But what if you can get significant better performance by not making a temporary
int sz; int sz;
}; };
}
Vector& Vector::operator=(const Vector& a) Vector& Vector::operator=(const Vector& a)
{ {
if (a.sz > sz) { if (a.sz > sz) {
@ -5419,7 +5417,7 @@ Is it a type that maintains an invariant os simply a collection of values?
This leaves us with three alternatives: This leaves us with three alternatives:
* *All public*: If you're writing an aggregate bundle-of-variables without an invariant across those variables, then all the variables should be public. * *All public*: If you're writing an aggregate bundle-of-variables without an invariant across those variables, then all the variables should be public.
[Ddeclare such classes `struct` rather than `class`](#Rc-struct) [Declare such classes `struct` rather than `class`](#Rc-struct)
* *All protected*: [Avoid `protected` data](#Rh-protected). * *All protected*: [Avoid `protected` data](#Rh-protected).
* *All private*: If youre writing an type that maintains an invariant, then all the variables should be private it should be encapsulated. * *All private*: If youre writing an type that maintains an invariant, then all the variables should be private it should be encapsulated.
This is the vast majority of classes. This is the vast majority of classes.
@ -6087,9 +6085,9 @@ Enumeration rule summary:
* [Enum.1: Prefer enums over macros](#Renum-macro) * [Enum.1: Prefer enums over macros](#Renum-macro)
* [Enum.2: Use enumerations to represent sets of named constants](#Renum-set) * [Enum.2: Use enumerations to represent sets of named constants](#Renum-set)
* [Enum.3: Prefer class enums over ``plain'' enums](#Renum-class) * [Enum.3: Prefer class enums over "plain" enums](#Renum-class)
* [Enum.4: Define operations on enumerations for safe and simple use](#Renum-oper) * [Enum.4: Define operations on enumerations for safe and simple use](#Renum-oper)
* [Enum.5: Don't use ALL_CAPS for enumerators](#Renum-caps) * [Enum.5: Don't use `ALL_CAPS` for enumerators](#Renum-caps)
* [Enum.6: Use unnamed enumerations for ???](#Renum-unnamed) * [Enum.6: Use unnamed enumerations for ???](#Renum-unnamed)
* ??? * ???
@ -6142,7 +6140,7 @@ An enumeration shows the enumerators to be related and can be a named type
??? ???
### <a name="Renum-class"></a> Enum.3: Prefer class enums over ``plain'' enums ### <a name="Renum-class"></a> Enum.3: Prefer class enums over "plain" enums
##### Reason ##### Reason
@ -6182,7 +6180,7 @@ Convenience of use and avoidance of errors.
??? ???
### <a name="Renum-caps"></a> Enum.5: Don't use ALL_CAPS for enumerators ### <a name="Renum-caps"></a> Enum.5: Don't use `ALL_CAPS` for enumerators
##### Reason ##### Reason
@ -6522,7 +6520,7 @@ They are a notable source of errors.
##### Enforcement ##### Enforcement
(??? NM: Obviously we can warn about non-const statics....do we want to?) (??? NM: Obviously we can warn about non-`const` statics....do we want to?)
## <a name="SS-alloc"></a> R.alloc: Allocation and deallocation ## <a name="SS-alloc"></a> R.alloc: Allocation and deallocation
@ -7375,7 +7373,7 @@ Check names against a list of known confusing letter and digit combinations.
##### Reason ##### Reason
Such names are commonly used for macros. Thus, ALL_CAPS name are vulnerable to unintended macro substitution. Such names are commonly used for macros. Thus, `ALL_CAPS` name are vulnerable to unintended macro substitution.
##### Example ##### Example
@ -11893,19 +11891,19 @@ It is more likely to be stable, well-maintained, and widely available than your
### SL.???: printf/scanf ### SL.???: printf/scanf
# <a name"S-A"></a> A: Architectural Ideas # <a name="S-A"></a> A: Architectural Ideas
This section contains ideas about ??? This section contains ideas about ???
### <a name"Ra-stable"></a> A.1 Separate stable from less stable part of code ### <a name="Ra-stable"></a> A.1 Separate stable from less stable part of code
??? ???
### <a name"Ra-reuse"></a> A.2 Express potentially reusable parts as a library ### <a name="Ra-reuse"></a> A.2 Express potentially reusable parts as a library
??? ???
### <a name"Ra-lib"></a> A.3 Express potentially separately maintained parts as a library ### <a name="Ra-lib"></a> A.3 Express potentially separately maintained parts as a library
??? ???
@ -12680,7 +12678,7 @@ Naming and layout rules:
* [NL.5: Don't encode type information in names](#Rl-name-type) * [NL.5: Don't encode type information in names](#Rl-name-type)
* [NL.7: Make the length of a name roughly proportional to the length of its scope](#Rl-name-length) * [NL.7: Make the length of a name roughly proportional to the length of its scope](#Rl-name-length)
* [NL.8: Use a consistent naming style](#Rl-name) * [NL.8: Use a consistent naming style](#Rl-name)
* [NL 9: Use ALL_CAPS for macro names only](#Rl-all-caps) * [NL 9: Use `ALL_CAPS` for macro names only](#Rl-all-caps)
* [NL.10: Avoid CamelCase](#Rl-camel) * [NL.10: Avoid CamelCase](#Rl-camel)
* [NL.15: Use spaces sparingly](#Rl-space) * [NL.15: Use spaces sparingly](#Rl-space)
* [NL.16: Use a conventional class member declaration order](#Rl-order) * [NL.16: Use a conventional class member declaration order](#Rl-order)
@ -12850,7 +12848,7 @@ Try to be consistent in your use of acronyms, lengths of identifiers:
Would be possible except for the use of libraries with varying conventions. Would be possible except for the use of libraries with varying conventions.
### <a name="Rl-all-caps"></a> NL 9: Use ALL_CAPS for macro names only ### <a name="Rl-all-caps"></a> NL 9: Use `ALL_CAPS` for macro names only
##### Reason ##### Reason
@ -12873,7 +12871,7 @@ This rule applies to non-macro symbolic constants:
##### Enforcement ##### Enforcement
* Flag macros with lower-case letters * Flag macros with lower-case letters
* Flag ALL_CAPS non-macro names * Flag `ALL_CAPS` non-macro names
### <a name="Rl-camel"></a> NL.10: Avoid CamelCase ### <a name="Rl-camel"></a> NL.10: Avoid CamelCase
@ -13887,14 +13885,14 @@ Alternatively, we will decide that no change is needed and delete the entry.
* Const member functions should be thread safe "¦ aka, but I don't really change the variable, just assign it a value the first time its called "¦ argh * Const member functions should be thread safe "¦ aka, but I don't really change the variable, just assign it a value the first time its called "¦ argh
* Always initialize variables, use initialization lists for member variables. * Always initialize variables, use initialization lists for member variables.
* Anyone writing a public interface which takes or returns void* should have their toes set on fire. That one has been a personal favourite of mine for a number of years. :) * Anyone writing a public interface which takes or returns void* should have their toes set on fire. That one has been a personal favourite of mine for a number of years. :)
* Use `const`'ness wherever possible: member functions, variables and (yippee) const_iterators * Use `const`'ness wherever possible: member functions, variables and (yippee) `const_iterators`
* Use `auto` * Use `auto`
* `(size)` vs. `{initializers}` vs. `{Extent{size}}` * `(size)` vs. `{initializers}` vs. `{Extent{size}}`
* Don't overabstract * Don't overabstract
* Never pass a pointer down the call stack * Never pass a pointer down the call stack
* falling through a function bottom * falling through a function bottom
* Should there be guidelines to choose between polymorphisms? YES. classic (virtual functions, reference semantics) vs. Sean Parent style (value semantics, type-erased, kind of like `std::function`) vs. CRTP/static? YES Perhaps even vs. tag dispatch? * Should there be guidelines to choose between polymorphisms? YES. classic (virtual functions, reference semantics) vs. Sean Parent style (value semantics, type-erased, kind of like `std::function`) vs. CRTP/static? YES Perhaps even vs. tag dispatch?
* Speaking of virtual functions, should non-virtual interface be promoted? NO. (public non-virtual foo() calling private/protected do_foo())? Not a new thing, seeing as locales/streams use it, but it seems to be under-emphasized. * Speaking of virtual functions, should non-virtual interface be promoted? NO. (public non-virtual `foo()` calling private/protected `do_foo()`)? Not a new thing, seeing as locales/streams use it, but it seems to be under-emphasized.
* should virtual calls be banned from ctors/dtors in your guidelines? YES. A lot of people ban them, even though I think it's a big strength of C++ that they are ??? -preserving (D disappointed me so much when it went the Java way). WHAT WOULD BE A GOOD EXAMPLE? * should virtual calls be banned from ctors/dtors in your guidelines? YES. A lot of people ban them, even though I think it's a big strength of C++ that they are ??? -preserving (D disappointed me so much when it went the Java way). WHAT WOULD BE A GOOD EXAMPLE?
* Speaking of lambdas, what would weigh in on the decision between lambdas and (local?) classes in algorithm calls and other callback scenarios? * Speaking of lambdas, what would weigh in on the decision between lambdas and (local?) classes in algorithm calls and other callback scenarios?
* And speaking of `std::bind`, Stephen T. Lavavej criticizes it so much I'm starting to wonder if it is indeed going to fade away in future. Should lambdas be recommended instead? * And speaking of `std::bind`, Stephen T. Lavavej criticizes it so much I'm starting to wonder if it is indeed going to fade away in future. Should lambdas be recommended instead?
@ -13925,7 +13923,7 @@ Alternatively, we will decide that no change is needed and delete the entry.
* When using a `condition_variable`, always protect the condition by a mutex (atomic bool whose value is set outside of the mutex is wrong!), and use the same mutex for the condition variable itself. * When using a `condition_variable`, always protect the condition by a mutex (atomic bool whose value is set outside of the mutex is wrong!), and use the same mutex for the condition variable itself.
* Never use `atomic_compare_exchange_strong` with `std::atomic<user-defined-struct>` (differences in padding matter, while `compare_exchange_weak` in a loop converges to stable padding) * Never use `atomic_compare_exchange_strong` with `std::atomic<user-defined-struct>` (differences in padding matter, while `compare_exchange_weak` in a loop converges to stable padding)
* individual `shared_future` objects are not thread-safe: two threads cannot wait on the same `shared_future` object (they can wait on copies of a `shared_future` that refer to the same shared state) * individual `shared_future` objects are not thread-safe: two threads cannot wait on the same `shared_future` object (they can wait on copies of a `shared_future` that refer to the same shared state)
* individual `shared_ptr` objects are not thread-safe: a thread cannot call a non-const member function of `shared_ptr` while another thread accesses (but different threads can call non-const member functions on copies of a `shared_ptr` that refer to the same shared object) * individual `shared_ptr` objects are not thread-safe: a thread cannot call a non-`const` member function of `shared_ptr` while another thread accesses (but different threads can call non-`const` member functions on copies of a `shared_ptr` that refer to the same shared object)
* rules for arithmetic * rules for arithmetic