gpt4 book ai didi

c++ - std::min 无法将枚举常量解释为有效整数类型 (g++ 4.6.3)

转载 作者:太空宇宙 更新时间:2023-11-04 16:21:46 24 4
gpt4 key购买 nike

我今天遇到了这个奇怪的错误,我正在使用 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”

我的代码中有什么不正确的地方导致了这个错误吗?这是一个有效的编译错误吗?

最佳答案

您的代码没问题。模板参数推导不进行转换(派生到基数除外),因此您使用简单定义的函数(例如std::min)会遇到此问题。 andrei alexandrescu 曾经写过a long treatise关于在 C++03 中需要什么才能使基于模板的 min 函数像宏一样宽松。

关于c++ - std::min 无法将枚举常量解释为有效整数类型 (g++ 4.6.3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15887707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com