Optional return values

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>{}; ...

Get C++ High Performance now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.