mirror of
https://github.com/isocpp/CppCoreGuidelines.git
synced 2024-03-22 13:30:58 +08:00
nothing
This commit is contained in:
parent
df8a441dcf
commit
1b7d217cd1
|
@ -4067,7 +4067,7 @@ For example, a derived class might be allowed to skip a run-time check because i
|
||||||
// ... data ...
|
// ... data ...
|
||||||
};
|
};
|
||||||
|
|
||||||
class Der : public Foo {
|
class Dir : public Foo {
|
||||||
//...
|
//...
|
||||||
int mem(int x, int y) { /* ... do something ... */ rteurn do_bar(x+y); } // OK: derived class can bypass check
|
int mem(int x, int y) { /* ... do something ... */ rteurn do_bar(x+y); } // OK: derived class can bypass check
|
||||||
}
|
}
|
||||||
|
@ -6959,13 +6959,13 @@ or various bases from boost.intrusive (e.g. `list_base_hook` or `intrusive_ref_c
|
||||||
int y;
|
int y;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Derive1 : public Interface, protected Utility {
|
class Derive1 : public Interface, virtual protected Utility {
|
||||||
// overrride Iterface functions
|
// overrride Iterface functions
|
||||||
// Maybe overrid Utility virtual functions
|
// Maybe overrid Utility virtual functions
|
||||||
// ...
|
// ...
|
||||||
};
|
};
|
||||||
|
|
||||||
class Derive2 : public Interface, protected Utility {
|
class Derive2 : public Interface, virtual protected Utility {
|
||||||
// overrride Iterface functions
|
// overrride Iterface functions
|
||||||
// Maybe overrid Utility virtual functions
|
// Maybe overrid Utility virtual functions
|
||||||
// ...
|
// ...
|
||||||
|
@ -17374,7 +17374,7 @@ String summary:
|
||||||
* [SL.str.4: Use `char*` to refer to a single character](#Rstr-char*)
|
* [SL.str.4: Use `char*` to refer to a single character](#Rstr-char*)
|
||||||
* [Sl.str.5: Use `std::byte` to refer to byte values that do not necessarily represent characters](#Rstr-byte)
|
* [Sl.str.5: Use `std::byte` to refer to byte values that do not necessarily represent characters](#Rstr-byte)
|
||||||
|
|
||||||
* [Sl.str.10: Use `std::string` when you need to perform locale-sensitive sting operations](#Rstr-locale)
|
* [Sl.str.10: Use `std::string` when you need to perform locale-sensitive string operations](#Rstr-locale)
|
||||||
* [Sl.str.11: Use `gsl::string_span` rather than `std::string_view` when you need to mutate a string](#Rstr-span)
|
* [Sl.str.11: Use `gsl::string_span` rather than `std::string_view` when you need to mutate a string](#Rstr-span)
|
||||||
* [Sl.str.12: Use the `s` suffix for string literals meant to be standard-library `string`s](#Rstr-s)
|
* [Sl.str.12: Use the `s` suffix for string literals meant to be standard-library `string`s](#Rstr-s)
|
||||||
|
|
||||||
|
@ -17570,7 +17570,7 @@ C++17
|
||||||
???
|
???
|
||||||
|
|
||||||
|
|
||||||
### <a name="Rstr-locale"></a>Sl.str.10: Use `std::string` when you need to perform locale-sensitive sting operations
|
### <a name="Rstr-locale"></a>Sl.str.10: Use `std::string` when you need to perform locale-sensitive string operations
|
||||||
|
|
||||||
##### Reason
|
##### Reason
|
||||||
|
|
||||||
|
@ -18204,10 +18204,12 @@ Candidates include:
|
||||||
|
|
||||||
* narrowing arithmetic promotions/conversions (likely part of a separate safe-arithmetic profile)
|
* narrowing arithmetic promotions/conversions (likely part of a separate safe-arithmetic profile)
|
||||||
* arithmetic cast from negative floating point to unsigned integral type (ditto)
|
* arithmetic cast from negative floating point to unsigned integral type (ditto)
|
||||||
* selected undefined behavior: Start with Gaby Dos Reis's UB list developed for the WG21 study group
|
* selected undefined behavior: Start with Gabriel Dos Reis's UB list developed for the WG21 study group
|
||||||
* selected unspecified behavior: Addressing portability concerns.
|
* selected unspecified behavior: Addressing portability concerns.
|
||||||
* `const` violations: Mostly done by compilers already, but we can catch inappropriate casting and underuse of `const`.
|
* `const` violations: Mostly done by compilers already, but we can catch inappropriate casting and underuse of `const`.
|
||||||
|
|
||||||
|
Enabling a profile is implementation defined; typically, it is set in the analysis tool used.
|
||||||
|
|
||||||
To suppress enforcement of a profile check, place a `suppress` annotation on a language contract. For example:
|
To suppress enforcement of a profile check, place a `suppress` annotation on a language contract. For example:
|
||||||
|
|
||||||
[[suppress(bounds)]] char* raw_find(char* p, int n, char x) // find x in p[0]..p[n-1]
|
[[suppress(bounds)]] char* raw_find(char* p, int n, char x) // find x in p[0]..p[n-1]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user