不使用#if
, stdint.h
,inttypes.h
或特定于编译器的扩展(非标准内部类型除外),但可以自由使用所有其他 C++ 功能(例如包括 C++11 type_traits
),是否可以编写具有以下效果的代码
typedef {some implementation-specific type} int_least64;
当且仅当存在提供至少 64 位精度的特定于实现的类型,否则会产生编译时错误?
该构造应该检测可能具有所需属性的非标准内在类型(例如__int64
在 MSVC++ 上)以及标准的内在类型(long
, long long
)。如果有几种类型符合要求,则应选择符合条件的最小的一种。enable_if
理想情况下,使用 in和错误输出以及检测任意大的整数(例如,一些编译器现在提供)都是可推广的__int128
。