gpt4 book ai didi

c++ - g++-4.4 中的强类型枚举

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:44:40 26 4
gpt4 key购买 nike

根据GCC C++11 support status website , 强类型枚举可用于 g++4.4和更大。

但是以下内容不能用 g++4.4 编译:

enum class Foo
{
value_1,
value_2
};

int main()
{
Foo a = Foo::value_1;
Foo b = Foo::value_2;
const bool test = ( a < b );
}

错误信息是error: invalid operands of types ‘Foo’ and ‘Foo’ to binary ‘operator<’ .

接受代码的编译器包括 g++-4.6 , g++-4.7 , g++-4.8clang++ 3.2 . (我无法使用 g++-4.5 进行测试,因为我目前没有安装它(并且 Ubuntu 13 不希望我安装))

我可以很容易地为这个(相当旧的)编译器提供一个宏的回退,但我通常不喜欢它(它在哪里停止?......)。

这里有什么问题?支持信息是错误的还是缺少“对强类型枚举的支持”中未包含的其他信息?我能想到的最后一个选项:问题出在我的代码中吗?

最佳答案

这是一个已知错误。正如@Casey 发现的那样,最初是 g++-4.4不支持对强类型枚举的任何关系操作。对于平等,这已在版本 4.4.1 中修复, 但对所有其他关系的修复,例如 <>只变成了4.5.1及以上。

这是 gcc bugzilla 上的原始错误线程:http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38064

关于c++ - g++-4.4 中的强类型枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17742135/

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