C++ 如何使用std::variant<;无符号长、大小、无符号整数>;

C++ 如何使用std::variant<;无符号长、大小、无符号整数>;,c++,enable-if,C++,Enable If,我遇到了一个可移植性问题,这是因为不同平台的大小不同(有时相当于无符号int,有时相当于无符号long) 我想写的是: “if constexpr”/“enable_if”/“whatever”(大小\u t==无符号长) 使用V=std::variant; 其他的 使用V=std::variant; 什么是不那么难看的写作方式 指向编译器资源管理器代码段的链接: :使用gcc 9.2 64位,其中size\u tunsigned long :使用msvc 19.22 32位,其中大小\u

我遇到了一个可移植性问题,这是因为不同平台的
大小不同(有时相当于
无符号int
,有时相当于
无符号long

我想写的是:


“if constexpr”/“enable_if”/“whatever”(大小\u t==无符号长)
使用V=std::variant;
其他的
使用V=std::variant;
什么是不那么难看的写作方式

指向编译器资源管理器代码段的链接:

:使用gcc 9.2 64位,其中
size\u t
unsigned long


:使用msvc 19.22 32位,其中
大小\u t
无符号int
由于需要条件类型别名,因此可以使用

使用V=std::conditional\u t;
谢谢!我真希望“if constexpr”能处理好它。我想我需要将“std::conditional”添加到我笨拙的“ifs”集合中(连同enable_if和#ifdef):-)
using V = std::conditional_t<std::is_same_v<std::size_t, unsigned long>,
            std::variant<unsigned int, size_t>,
            std::variant<unsigned long, size_t>
          >;