我今天遇到了这个奇怪的错误,我使用 std::min 来获取变量值和枚举常量的最小值,到目前为止,很好,但是当我去编译它时,g++ 给了我一个编译错误指示它找不到与 min 函数匹配的模板:
no matching function for call to ‘min(int&, main()::<anonymous enum>)’
这是一个重现错误的最小示例:
#include <algorithm>
int main()
{
int actualRange=10;
enum { DesiredRange=8 };
int workingRange = std::min(actualRange, DesiredRange);
return 0;
}
修复很简单,我简单地将int(DesiredRange)
其用作 min 函数的第二个参数,但令我惊讶的是,这是必要的,因为枚举类型只是一个整数常量。我的系统信息如下:“g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3”
我的代码中有什么不正确的地方导致了这个错误吗?这是一个有效的编译错误吗?