template<typename T, typename = std::enable_if_t<std::is_trivially_copyable<T>::value>>
inline
int test_sfinae(T tc) {
return 1;
}
template<typename T, typename = std::enable_if_t<!std::is_trivially_copyable<T>::value>>
inline
int test_sfinae(T ntc) {
return 2;
}
有人可以向我解释为什么这段代码无法编译并提供此错误消息:
C2995&#39; int test_sfinae(T)&#39;:功能模板已经定义
我正在使用MVSC。
答案 0 :(得分:8)
默认模板参数不参与重载解析,因此您的两个声明实际上是相同的。
您可以按以下方式重写声明:
T
当template <typename T, int = 0>
inline int test_sfinae(T tc);
template <typename T, /* Something that does not compile... */ = 0>
inline int test_sfinae(T ntc);
可以轻易复制时,声明将为:
T
因此将选择第一个重载,并且//getLabel.js
import store from '../store';
const getLabel = (label) => {
let labels = store.getState().labels;
if (!labels) return label;
//...do some calculations
return result;
};
不可轻易复制时反向。