ber*_*ers 2 c++ enums type-traits
我不明白为什么std::is_convertible_v<EnumClass, int>
在这个例子中返回 false,特别是考虑到它static_cast<int>(enumClassValue)
工作正常。
#include <iostream>
enum Enum {X = 5};
enum class EnumClass {X = 5};
int main() {
Enum enumValue = Enum::X;
std::cout << static_cast<int>(enumValue) << std::endl;
std::cout << std::is_convertible_v<Enum, int> << std::endl;
EnumClass enumClassValue = EnumClass::X;
std::cout << static_cast<int>(enumClassValue) << std::endl;
std::cout << std::is_convertible_v<EnumClass, int> << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
std::is_convertible_v<From, To>
true
如果 type 的值From
可以隐式转换为 type ,则返回To
。
https://en.cppreference.com/w/cpp/types/is_convertible
如果虚函数定义格式
To test() { return std::declval<From>(); }
正确(即,std::declval<From>()
可以使用隐式转换进行转换To
,或者两者From
都To
可以进行 cv 限定void
),则提供等于 的成员常量值true
。否则值为false
.
类型的值enum class
(与常规enum
类型不同)需要显式转换才能执行该转换;因此,返回的值is_convertible_v
是正确的。
归档时间: |
|
查看次数: |
82 次 |
最近记录: |