对于简单的标记调度实现,我得到了一个奇怪的调用函数“Equals”,该函数在模板定义中既不可见,也不通过依赖于参数的查找找到。
template <typename T>
bool Equals(T lhs, T rhs){
return Equals(rhs, lhs, conditional_t<is_floating_point<T>::value, true_type, false_type>{});
}
template <typename T> // for floating
bool Equals(T lhs, T rhs, true_type){
return abs(lhs - rhs) < 0.01;
}
template <typename T> // for all the other
bool Equals(T lhs, T rhs, false_type){
return lhs == rhs;
}
我究竟做错了什么?