Skip to content

Commit

Permalink
Replace R.5 exception and examples with moving a BigObject to the hea…
Browse files Browse the repository at this point in the history
…p to save stack

Closes isocpp#2221
  • Loading branch information
hsutter committed Oct 24, 2024
1 parent f3bc9dd commit 8557755
Showing 1 changed file with 1 addition and 18 deletions.
19 changes: 1 addition & 18 deletions CppCoreGuidelines.md
Original file line number Diff line number Diff line change
Expand Up @@ -9622,24 +9622,7 @@ Exception: Do not produce such a warning on a local `Unique_pointer` to an unbou

##### Exception

It is OK to create a local `const unique_ptr<T[]>` to a heap-allocated buffer, as this is a valid way to represent a scoped dynamic array.

##### Example

A valid use case for a local `const unique_ptr<T[]>` variable:

int get_median_value(const std::list<int>& integers)
{
const auto size = integers.size();

// OK: declaring a local unique_ptr<T[]>.
const auto local_buffer = std::make_unique_for_overwrite<int[]>(size);

std::copy_n(begin(integers), size, local_buffer.get());
std::nth_element(local_buffer.get(), local_buffer.get() + size/2, local_buffer.get() + size);

return local_buffer[size/2];
}
If your stack space is limited, it is OK to create a local `const unique_ptr<BigObject>` to store the object on the heap instead of the stack.

### <a name="Rr-global"></a>R.6: Avoid non-`const` global variables

Expand Down

0 comments on commit 8557755

Please sign in to comment.