在这个Tech-Talk about D的时间 0:43:15,讨论了 min 函数的实现。提出在某些算法中使用时对“稳定性”和“额外改组(如果值相等)”的担忧是所示实现的原因之一。
任何人都可以提供一个真实/实际的用例(或提供更详细的解释),其中 min 的这个特定实现是“稳定的”(又名更好)而不是其他可能的实现?或者这只是 alpha-geeks 走得太远的另一个例子?
推荐实施:
template <class LHS, class RHS, class Return>
inline Return min(LHS& lhs, RHS& rhs)
{
return (rhs < lhs) ? rhs : lhs;
}
其他可能的实现:
template <class LHS, class RHS, class Return>
inline Return min(LHS& lhs, RHS& rhs)
{
return (lhs < rhs) ? lhs: rhs;
}
提案N2199提供了基于后者的实现,请注意此时该提案并未成功。