通常、bignumは複数の単語を使用して実装されますが、可能な限り移植性のある単語サイズを選択したいと思います。これは、見た目よりも注意が必要std::uint64_t
です。多くの32ビットコンパイラで使用できますがstd::uint32_t
、32ビットマシンではおそらくより適切な選択です。したがって、std :: size_tを使用する誘惑になりますが、算術演算に最も効率的なタイプである特定のアーキテクチャの保証はありません。std::size_t
たとえば、新しいx32 LinuxではABI std::size_t
は32ビットですが、std::uint64_t
それでも最良の選択です。 。
C ++ 11には、さまざまなサイズの高速/最小タイプが定義されていますが、それらの相対的なパフォーマンスを照会する方法はありません。ポータブルな最良の答えはないかもしれないことを私は理解しています。今の私の最善の推測は、デフォルトstd::size_t
で設定時に例外的なアーキテクチャを検出することです。しかし、もっと良い方法があるのでしょうか?