Zur Zeit 0:43:15 in diesem Tech-Talk about D, Die Implementierung der min-Funktion wird diskutiert. Bedenken hinsichtlich "Stabilität" und "zusätzliches Mischen (wenn Werte gleich sind)", wenn sie in einigen Algorithmen verwendet werden, werden als einer der Gründe für die gezeigte Implementierung vorgeschlagen.Korrekte Implementierung von min
Kann jemand einen realen/praktischen Anwendungsfall (oder eine detailliertere Erklärung) zur Verfügung stellen, in dem diese spezifische Implementierung von min "stabil" (alias besser) im Gegensatz zu seiner anderen möglichen Implementierung ist? Oder ist das nur ein weiteres Beispiel für Alpha-Geeks, die ein bisschen zu weit gehen?
Empfohlene Umsetzung:
template <class LHS, class RHS, class Return>
inline Return min(LHS& lhs, RHS& rhs)
{
return (rhs < lhs) ? rhs : lhs;
}
Andere mögliche Implementierung:
template <class LHS, class RHS, class Return>
inline Return min(LHS& lhs, RHS& rhs)
{
return (lhs < rhs) ? lhs: rhs;
}
Vorschlag N2199 bietet Implementierungen, die auf diesem basieren, bitte beachten Sie, dass der Vorschlag zu diesem Zeitpunkt nicht erfolgreich war.
Weitere relevante Vorschläge in Zusammenhang mit min/max sind N1840, N2485 und N2551
Ich verstehe es nicht. Ich kann keinen Vorteil für eine der Implementierungen sehen, die Sie zeigen. Irgendwann muss einer von ihnen gewählt werden ... –
Ich finde es höchst amüsant, wie eine Frage sehr enger Fokussierung und begrenzter Anwendbarkeit sehr hoch bewertet wird, wenn eine Frage von sehr breitem Fokus, die für fast jeden gilt, Thema'. Ich weiß, dass in der Programmierung Details sehr wichtig sein können. Aber dieses ist sehr wichtig und ich würde mich nie auf die Stabilität von min verlassen, um in Code, den ich geschrieben habe, trotzdem korrekt zu sein, weil es zu klein ist, um darauf zu achten, dass jemand richtig ankommt. – Omnifarious
@Onmifarious: Ich denke, Sie haben das Thema missverstanden, es handelt nicht von etwas Trivialem, sondern von einem Thema, das C++ in den letzten 10 Jahren verfolgt hat, aber um das zu fördern, einer der Weltkenner der Sprache und einiger Leute eine etwas prestigeträchtige Organisation wie Google, haben einen Kommentar abgegeben, und es soo normal und "sachlich" klingen lassen, wenn die meisten in der Branche dem Gegenteil zustimmen würden, dass man sich nicht helfen kann, aber sich fragt, ob das ein anderer Kepler oder ist Die Situation von Galileo, die Welt anzurufen ... ist wahrscheinlich alles nur Unsinn, aber warum nicht darüber diskutieren? –