12

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か?

4

1 に答える 1