【发布时间】:2018-09-08 23:56:59
【问题描述】:
想想下面我挖掘的例子here on StackOverflow
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;
}
其中typename boost::mpl::identity<T>::type 阻止编译器根据第二个和第三个参数的类型推断 T。这对我来说非常方便,但我不能使用Boost Library(请不要让我为此感到难过,因为这已经很困难了)。
现在的问题是标准库中的等价物是我找不到的吗?
【问题讨论】:
-
如果标准中没有任何内容,那么自己实现它并不难:synopsis here 几乎就是它的全部内容
-
@kmdreko 完全正确。我只是想知道它在图书馆里,因为它让我觉得拥有它是一件好事。
标签: c++ c++17 c++-standard-library type-deduction