Во время 0:43:15 в этом Tech-Talk о D , обсуждается реализация функции min. В качестве одной из причин показанной реализации предложены опасения по поводу «стабильности» и «дополнительной перестановки (если значения равны)» при использовании в некоторых алгоритмах.
Может ли кто-нибудь предоставить реальный / практический вариант использования (или предоставить более подробное объяснение), где эта конкретная реализация min является "стабильной" (или лучше), в отличие от ее другой возможной реализации? Или это просто еще один пример того, как альфа-гики зашли слишком далеко?
Рекомендуемая реализация:
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 предоставляет реализации, основанные на последнем, обратите внимание, что на данный момент предложение не было успешным.
Другие соответствующие предложения, касающиеся мин / макс: N1840 , N2485 и N2551