clamp
ブーストの実装を確認していました:
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;
}
ドキュメントを調べるとidentity
、テンプレート引数を変更せずに返します。
恒等メタ関数。X を変更せずに返します。
では、ここでそれを使用するポイントは何ですか?
typename boost::mpl::identity<T>::type
と同等ではありませんT
か?