gpt4 book ai didi

c++ - 如何 std::variant

转载 作者:行者123 更新时间:2023-12-03 20:18:47 26 4
gpt4 key购买 nike

我遇到了一个可移植性问题,这是因为 size_t 因平台而异(有时它等于 unsigned int,有时等于 unsigned长)

我想写的是:


"if constexpr" / "enable_if" / "whatever" (size_t == unsigned long)
using V = std::variant<unsigned int, size_t>;
else
using V = std::variant<unsigned long, size_t>;

有什么不那么丑陋的写法?

编译器资源管理器片段链接:

https://godbolt.org/z/AZVFEz : 使用 gcc 9.2 64 位,其中 size_t <-> unsigned long

https://godbolt.org/z/wWeCbW : 使用 msvc 19.22 32 位,其中 size_t <-> unsigned int

最佳答案

因为你想要一个条件类型别名,你可以使用 std::conditional

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>
>;

关于c++ - 如何 std::variant<unsigned long, size_t, unsigned int>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58889267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com