【发布时间】:2015-12-19 09:08:50
【问题描述】:
所以,我正在按照此网页某处的代码设置的示例进行操作: http://eli.thegreenplace.net/2014/sfinae-and-enable_if/
这是我所拥有的:
template<typename T>
void fun(const typename std::enable_if_t<std::is_integral<T>::value, T>& val) {
std::cout << "fun<int>";
}
template<typename T>
void fun(const typename std::enable_if_t<std::is_floating_point<T>::value, T>& val) {
std::cout << "fun<float>";
}
int main()
{
fun(4);
fun(4.4);
}
这样我就不得不写了:
fun<int>(4);
fun<double>(4.4);
如何避免这种情况?
编译器报错无法推导出参数T。
【问题讨论】:
标签: c++ templates c++11 sfinae