|
A raw pointer owns nothing
|
Medium
|
Primitives
|
|
|
Break an ownership cycle with weak_ptr
|
Hard
|
Primitives
|
|
|
Catch exceptions without slicing their type
|
Medium
|
Primitives
|
|
|
Choose integer width and overflow behavior
|
Easy
|
Primitives
|
|
|
Close a transaction when an operation throws
|
Medium
|
Primitives
|
|
|
Declare non-throwing Buffer moves
|
Medium
|
Primitives
|
|
|
Erasing while you walk
|
Medium
|
Primitives
|
|
|
Give an allocated object an owner
|
Medium
|
Primitives
|
|
|
Handle signed counts and unsigned sizes
|
Medium
|
Primitives
|
|
|
Implement copying and moving for an owned handle
|
Hard
|
Primitives
|
|
|
Keep ledger entries and their total consistent
|
Medium
|
Primitives
|
|
|
Let a vector own the histogram buckets
|
Medium
|
Primitives
|
|
|
Make temperature construction explicit
|
Medium
|
Primitives
|
|
|
Observe cleanup at the end of a scope
|
Easy
|
Primitives
|
|
|
Read a compiler diagnostic
|
Easy
|
Primitives
|
|
|
Reading text you do not own
|
Medium
|
Primitives
|
|
|
Read payloads without copying their contents
|
Easy
|
Primitives
|
|
|
Reserve space before filling a vector
|
Easy
|
Primitives
|
|
|
Restore memberwise moves with the Rule of Zero
|
Medium
|
Primitives
|
|
|
Say it in the signature
|
Easy
|
Primitives
|
|
|
Scale pixel channels safely
|
Easy
|
Primitives
|
|
|
Skip invalid fields without losing valid results
|
Medium
|
Primitives
|
|
|
Summarize a range with standard algorithms
|
Medium
|
Primitives
|
|
|
The accessor that will not let you look
|
Easy
|
Primitives
|
|
|
The lookup that writes
|
Medium
|
Primitives
|
|
|
Update elements through references
|
Medium
|
Primitives
|
|
|
What gets compiled with your code
|
Easy
|
Primitives
|
|
|
What is left after you move from it
|
Medium
|
Primitives
|
|
|
When std::move selects a copy
|
Medium
|
Primitives
|
|
|
Write the guard yourself
|
Medium
|
Primitives
|
|
|
Your first C++ lint check
|
Easy
|
Primitives
|
|
|
Zero is an answer
|
Easy
|
Primitives
|
|