Before the introduction of std::optional, there was no clear way to define functions which may not return a defined value, such as the intersection point of two line segments. With the introduction of std::optional, such optional return values can be clearly expressed. Following is an implementation of a function which returns an optional intersection between two lines:
// Prerequisiteclass Point {...}; class Line {...}; external auto is_intersecting(Line a, Line b) -> bool {...}external auto get_intersection(Line a, Line b) -> Point {...}auto get_intersection_point(const Line& a, const Line& b) -> std::optional<Point> { return is_intersection(a, b) ? std::make_optional(get_intersection(a, b)): std::optional<Point>{}; ...