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 次 |
| 最近记录: |