Refactoring With C++17 std::optional

There are many situations where you need to express that something is “optional" – an object that might contain a value or not. You have several options to implement in such cases, but with C++17 the most helpful way is probably std::optional.
For today I’ve prepared one refactoring case where you can learn how to apply this new C++17 feature.