gpt4 book ai didi

c++ - 类型函数从类型 T 到类型积分,其中 sizeof(integral) >= sizeof(T)

转载 作者:行者123 更新时间:2023-11-30 00:51:57 25 4
gpt4 key购买 nike

我想要一个类型函数,它采用类型 T 并返回满足 sizeof(I) >= sizeof(T) 的最小整数类型。

关于如何处理这个问题有什么想法、见解或评论吗? C++11 可用,欢迎使用 C++14 的想法。

对于好奇的人:我正在研究编程元素。我有一个函数,它从一个组(如 int)映射到自身。设 x 在函数的域中,y 是通过将 f 应用于 x 多次获得的。我想知道在得到 y 之前我必须将我的函数应用于 x 多少次。该值称为距离,是某个整数。如果以 k 位指定组类型,则不同值的总数为 pow(2,k)。元素之间可能的跳转总数为 pow(2,k) - 1。因此,与组类型大小相同的整数类型足以容纳此距离函数可能返回的所有可能距离。

最佳答案

应该这样做:

template<typename T>
struct identity {
typedef T type;
};

template<typename T, typename Head, typename... Tail>
struct best_type {
typedef typename std::conditional<
sizeof(Head) >= sizeof(T),
identity<Head>,
best_type<T, Tail...>
>::type::type type;
};

template<typename T>
struct type_to_integral {
typedef typename best_type<T, uint8_t, uint16_t, uint32_t, uint64_t, uint_least64_t>::type type;
};

现场演示 here .

关于c++ - 类型函数从类型 T 到类型积分,其中 sizeof(integral) >= sizeof(T),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20229521/

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