如何获得支持枚举的类型

时间:2019-05-08 08:42:29

标签: c++

我想编写一个测试来检测枚举的基础类型,并且该测试用例应与编译器无关。

我不能使用std::underlying_type__underlying_type和其他特定于编译器的实现方式

2 个答案:

答案 0 :(得分:6)

GCC具有__underlying_type (type)作为编译器固有函数。内在函数是编译器在内部实现的特殊功能。

其他编译器可能以类似的方式工作。

答案 1 :(得分:4)

这是实现定义的。例如,对于clang,它实现为via the __underlying_type(type) compiler featureLikewise for GCC

不使用标准库中的std::underlying_type的主要原因是在没有可用标准库的环境中。 (嵌入式,内核等)通常,在这种情况下,您将针对一组封闭的编译器,因此,您可以使用每个编译器必需的特定于实现的功能,分别针对每个目标编译器重新实现std::underlying_type