我想使用C ++ 17 std::byte
类型(如果可用),如果没有,我会回到使用unsigned char
,即沿着
#include <cstddef>
namespace my {
#if SOMETHING
using byte = std::byte;
#else
using byte = unsigned char;
#endif
}
不幸的是,std::byte
似乎没有附带通常的功能测试宏,所以上面SOMETHING
应该是什么并不明显。 (AFAIK对于{17}的__cplusplus
的值还没有设置,所以我也无法对此进行测试。)
那么,是否有人知道如何检测三大编译器上是否有std::byte
?
答案 0 :(得分:4)
如果要测试C ++ 17引入的std::byte
的可用性,则应使用__cpp_lib_byte
宏(功能测试宏的完整列表为here)。
示例用法:
#include <iostream>
#include <cstddef>
#if __cpp_lib_byte
using byte = std::byte;
#else
using byte = unsigned char;
#endif
int main() {
return 0;
}
答案 1 :(得分:0)