Summary
Smart pointers are pointer wrappers which provide certain built-in memory safety guarantees pertaining to shared access. This is achieved by enforcing an ownership model, and through so called move semantics.
Overview
int main() {
std::unique_ptr resourceA_ptr = std::make_unique();
auto resourceA_ptr_moved = std::move(resourceA);
std::shared_ptr resourceB_ptr = std::make_shared();
auto resourceB_ptr_copy = resourceB
}
```