Правильная реализация min

В момент времени 0:43:15 в этом Tech-Talk about D , Обсуждается реализация функции min. Опасения по поводу "стабильности" и "дополнительного перемешивания (если значения равны)" при использовании в некоторых алгоритмах (ах) предлагаются в качестве одной из причин показанной реализации.

Может ли кто-нибудь предоставить реальный / практический вариант использования (или предоставить более подробное объяснение), где эта конкретная реализация min является «стабильной» (то есть лучше) в отличие от других возможных реализаций? Или это просто еще один пример того, как альфа-гики зашли слишком далеко?

Рекомендуемая реализация:

template 
inline Return min(LHS& lhs, RHS& rhs)
{
   return (rhs < lhs) ? rhs : lhs;
}

Другая возможная реализация:

template 
inline Return min(LHS& lhs, RHS& rhs)
{
   return (lhs < rhs) ? lhs: rhs;
}

Предложение N2199 предоставляет реализации, основанные на последнем, пожалуйста обратите внимание, что предложение не было успешным в настоящее время.

Другие соответствующие предложения, касающиеся мин / макс: N1840 , N2485 и N2551

17
задан River 19 October 2017 в 04:14
поделиться