我正在寻找一种数据类型(将用作索引),它在 32 位操作系统中应该是 16 位,在 64 位操作系统中应该是 32 位。我使用 VS2010,我知道 HALF_PTR 可以使用,但用于索引时听起来不太好,我仍然可以将其键入更有意义的名称,但在此之前有任何已定义的数据类型可以用于这个目的?
问问题
122 次
1 回答
5
您可以使用特征来创建适合您系统的类型别名:
#include <cstdint>
template <unsigned int> struct HalfPtrImpl;
template <> struct HalfPtrImpl<4> { typedef uint16_t type; };
template <> struct HalfPtrImpl<8> { typedef uint32_t type; };
typedef HalfPtrImpl<sizeof(uintptr_t)>::type HalfPtr;
现在HalfPtr
用作您的类型。
std::conditional
(您可以通过使用几次来简化上述操作。很多方法可以给这只猫剥皮。)
于 2013-10-22T21:13:29.843 回答