我想编写一个测试来检测枚举的基础类型,并且该测试用例应与编译器无关。
我不能使用std::underlying_type
,__underlying_type
和其他特定于编译器的实现方式
答案 0 :(得分:6)
GCC具有__underlying_type (type)
作为编译器固有函数。内在函数是编译器在内部实现的特殊功能。
其他编译器可能以类似的方式工作。
答案 1 :(得分:4)
这是实现定义的。例如,对于clang,它实现为via the __underlying_type(type)
compiler feature。 Likewise for GCC。
不使用标准库中的std::underlying_type
的主要原因是在没有可用标准库的环境中。 (嵌入式,内核等)通常,在这种情况下,您将针对一组封闭的编译器,因此,您可以使用每个编译器必需的特定于实现的功能,分别针对每个目标编译器重新实现std::underlying_type