Skip to content

Commit

Permalink
Con.1 Issue #1905 Return local const (#2114)
Browse files Browse the repository at this point in the history
* Con.1 const return

* minor
  • Loading branch information
bgloyer authored Oct 12, 2023
1 parent e694c3c commit 56e5b42
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions CppCoreGuidelines.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`

Expand Down

0 comments on commit 56e5b42

Please sign in to comment.