gpt4 book ai didi

c++ - std::is_signed 不适用于强类型枚举:int

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:21:03 24 4
gpt4 key购买 nike

谁能解释一下,为什么

#include <iostream>
#include <type_traits>
using namespace std;
enum E : signed int { a=-1, b = 1,};
int main() {
std::cout << std::boolalpha;
cout << "strong typed enum E:int should be signed, but is_signed returns "
<< is_signed<E>() << "\n";
return 0;
}

std::is_signed<> 不做,锡上写的是什么?谢谢...

最佳答案

如果我们查看 is_signed 的文档它说:

If T is a signed arithmetic type, provides the member constant value equal true. For any other type, value is false.

并且枚举不是算术类型,因此结果应该为假。来自 C++11 标准草案 3.9.1 基础类型 [basic.fundamental]:

[...]Integral and floating types are collectively called arithmetic types[...]

您可以使用 std::underlying_type 获取枚举的基础类型然后将 std::is_signed 应用于该类型。

关于c++ - std::is_signed 不适用于强类型枚举:int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33363994/

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