gpt4 book ai didi

c++ - 是否有可以使用的整数类型,它包含任何枚举值

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:12 24 4
gpt4 key购买 nike

我有一些代码需要做 static_cast<foo>(bar)其中 foo是整数类型(简单地说, int )和 bar是一个枚举值。

有没有一种类型可以用于 foo 保证 static_cast对于任何枚举数的任何枚举值是否有效?

最佳答案

是的,那是 std::underlying_type_t<decltype(bar)> .

如果您需要所有枚举的通用类型,可以使用 union { intmax_t s; uintmax_t u;} .显然,在哪种情况下使用这两个成员中的哪一个取决于每个枚举类型的签名:

template<typename E> 
std::enable_if<std::is_signed<std::underlying_type_t<E>>::value,
intmax_t>::type foo( // ...

关于c++ - 是否有可以使用的整数类型,它包含任何枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33304874/

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