我正在检查clamp
in boost 的实现:
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
?