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
?