Con.1 Issue #1905 Return local const (#2114)

* Con.1 const return

* minor
This commit is contained in:
bgloyer 2023-10-12 13:02:28 -07:00 committed by GitHub
parent e694c3cd04
commit 56e5b42eee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -16859,19 +16859,28 @@ Prevents accidental or hard-to-notice change of value.
for (int i : c) cout << i << '\n'; // BAD: just reading
##### Exception
##### Exceptions
A local variable that is returned by value and is cheaper to move than copy should not be declared `const`
because it can force an unnecessary copy.
std::vector<int> f(int i)
{
std::vector<int> v{ i, i, i }; // const not needed
return v;
}
Function parameters passed by value are rarely mutated, but also rarely declared `const`.
To avoid confusion and lots of false positives, don't enforce this rule for function parameters.
void f(const char* const p); // pedantic
void g(const int i) { ... } // pedantic
Note that a function parameter is a local variable so changes to it are local.
##### Enforcement
* Flag non-`const` variables that are not modified (except for parameters to avoid many false positives)
* Flag non-`const` variables that are not modified (except for parameters to avoid many false positives
and returned local variables)
### <a name="Rconst-fct"></a>Con.2: By default, make member functions `const`