uint64_t
はUINT_MAX
の場合なので、unsigned int
の最大値を表すマクロを探しています。つまり、この値が(1 << 64)-1であることを保証する必要があります。
UINT64_MAX
を使用しようとしましたが、g ++でコンパイルすると次のようになります。
'UINT64_MAX' was not declared in this scope
#define __STDC_LIMIT_MACROS
を使用する前に、コードにこの行UINT64_MAX
があることを述べておきます。
それについてウェブ上で有用な情報を見つけられないことに私は驚いた。
cstdint
ヘッダーを移植性のある方法で使用することは、かなり困難な場合があります(一部のMSVC実装にはありません)。同時に、numeric_limits::max()
をconstexpr
なしで使用するのは困難な場合があり、実際には_uint64_t
_を使用する必要はありません。これらのことをあまり気にしない場合は、std::numeric_limits<uint64_t>::max()
がおそらくうまくいくでしょう。
Boost.Integer にはcstdint
の実装があり、一定の最大値を取得するための追加の特性クラスが付属しています。準拠したcstdint
の実装でもマクロ_UINT64_MAX
_を提供する必要がありますが、ブーストについてはよくわかりません。