Я проверял реализацию clamp
в наддува:Что такое «boost :: mpl :: identity <T> :: type» здесь?
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
возвращает шаблон аргумент без изменений.
Личность metafunction. Возвращает X без изменений.
И какой смысл использовать его здесь?
Не является typename boost::mpl::identity<T>::type
эквивалентом T
?
отключает вывод типа по этим параметрам –
, поэтому он вычитает 'T' исключительно на основе первого параметра? aaaah ... thx –
да, точно так же, как вы сказали –