错误提示:
Error 1 error C2893: Failed to specialize function template 'unknown-type std::less<void>::operator ()(_Ty1 &&,_Ty2 &&) const'
错误消息
未能使函数模板“template name”专用化编译器未能使函数模板专用化。有多种原因可导致此错误。
通常,处理 C2893 错误的方法就是检查函数的签名,并确保可以实例化每个类型。
原因:在使用std::min,std::max,std::sort等函数的时,函数不知道该如何进行大小比较
解决:重载<或者>运算符,或者用函数的其他重载形式
default (1) | template <class T> const T& min (const T& a, const T& b); |
---|---|
custom (2) | template <class T, class Compare> const T& min (const T& a, const T& b, Compare comp); |
initializer list (3) | template <class T> T min (initializer_list<T> il); template <class T, class Compare> T min (initializer_list<T> il, Compare comp); |