-1

我正在寻找一种数据类型(将用作索引),它在 32 位操作系统中应该是 16 位,在 64 位操作系统中应该是 32 位。我使用 VS2010,我知道 HALF_PTR 可以使用,但用于索引时听起来不太好,我仍然可以将其键入更有意义的名称,但在此之前有任何已定义的数据类型可以用于这个目的?

4

1 回答 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 回答