As stated before, the goal of the C++ Core Guidelines is to provide a set of best practices associated with programming C++. The GSL is a library designed to assist in maintaining compliance with these guidelines. In general, there are some overall themes associated with the GSL:
- Pointer ownership: Defining who owns a pointer is a simple way to prevent memory leaks and pointer corruption. In general, the best way to define ownership is through the use of std::unique_ptr{} and std::shared_ptr{}, which will be explained in depth in Chapter 7, A Comprehensive Look at Memory Management, but in some cases, these cannot be used and the GSL helps to deal with these edge cases.
- Expectation management: The GSL also helps to define what a function should expect for input and what it ensures for output, with the goal being to transition these concepts...