Qual é o objetivo de "boost :: mpl :: identity <T> :: type" aqui?

Eu estava verificando a implementação declamp no impulso:

  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;
  } 

Se eu procurar a documentação,identity retorna o argumento do modelo inalterado.

A metafunção de identidade. Retorna X inalterado.

Então, qual é o sentido de usá-lo aqui?

Não étypename boost::mpl::identity<T>::type equivalente aT?

questionAnswers(1)

yourAnswerToTheQuestion