有时函数的结果不能用单个返回值来表示。例如:与两条线相交的函数。人们可能希望函数返回实际的交点以及它们之间的关系(即平行、相同、相交或倾斜)。
让我们假设这个例子,其中交点由某种类表示,线的位置关系由一个整数表示,整数为 4 种可能性中的每一种都保存一个指定的值:
int IntersectLines(Line l1, Line l2, Point& point);
Point point{};
int result = IntersectLines(l1, l2, point);
这就是我今天实现它的方式,但现在我想知道是否有可能有一个类似的实现,但有一个 consteval 函数。Line
并且Point
有 constexpr 构造函数和一切,计算本身也可以在编译时进行评估。唯一的问题是我想不出有两个返回值的方法。我已经想到了,std::pair
但更类似于传递引用的解决方案将是首选。如果不存在这样的解决方案,我将不得不退回到std::pair
.
point
通过引用 ( )传递不起作用,Point& point
因为“表达式没有计算为常量”,但通过 const 引用 ( const Point& point
) 传递也不起作用,因为我无法将结果分配给point
. 有没有办法让这个工作?