Ich war die Umsetzung des clamp
im Boost-Überprüfung:Was ist der Punkt von "boost :: mpl :: identity <T> :: type" hier?
template<typename T, typename Pred>
T const & clamp (T const& val,
typename boost::mpl::identity<T>::type const & lo,
typename boost::mpl::identity<T>::type const & hi, Pred p)
{
// assert (!p (hi, lo)); // Can't assert p (lo, hi) b/c they might be equal
return p (val, lo) ? lo : p (hi, val) ? hi : val;
}
Wenn ich die Dokumentation nachschlagen, identity
das Template-Argument unverändert zurückgegeben.
Die Identität Metafunktion. Gibt X unverändert zurück.
Also, was ist der Sinn der Verwendung hier?
Ist nicht typename boost::mpl::identity<T>::type
entspricht T
?
deaktiviert Typ Abzug auf diese Parameter –
so zieht es "T" rein basierend auf dem ersten Parameter? aaaah ... thx –
ja, genau wie du gesagt hast –