Tôi đã kiểm tra việc thực hiện các clamp
trong thúc đẩy:Điểm của "boost :: mpl :: identity <T> :: type" ở đây là gì?
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;
}
Nếu tôi tìm kiếm các tài liệu, identity
trả về đối số mẫu không thay đổi.
Tính chất siêu thực. Trả về X không đổi.
Vì vậy, điểm của việc sử dụng nó ở đây là gì?
Không phải là typename boost::mpl::identity<T>::type
tương đương với T
?
vô hiệu loại khấu trừ trên các thông số này –
để nó suy ra 'T' hoàn toàn dựa trên tham số đầu tiên? aaaah ... thx –
vâng, đúng như bạn đã nói –