【发布时间】:2015-01-09 04:52:07
【问题描述】:
我正在检查 clamp 在 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吗?
【问题讨论】:
-
禁用对这些参数的类型推断
-
所以它纯粹根据第一个参数扣除
T?啊……谢谢 -
是的,正如你所说的
标签: c++ templates boost template-argument-deduction