【发布时间】:2019-05-24 01:03:46
【问题描述】:
MSVC 为以下代码产生错误(“函数模板已被定义”):
template<typename T, typename = std::enable_if_t<std::is_default_constructible<T>::value>>
auto foo(T&& val) {
return 0;
}
// note difference from above ---> !
template<typename T, typename = std::enable_if_t<!std::is_default_constructible<T>::value>>
auto foo(T&& val) {
return 0;
}
我认为它会起作用,因为存在互斥的 sfinae 条件。你能帮我解决我的理解上的漏洞吗?
【问题讨论】:
-
std::enable_if's doc 有一个关于此的注释部分。
标签: c++ templates sfinae typetraits enable-if