バックグラウンド
stdint残念ながら、現在の C++ 標準には、ヘッダーで定義された C99 の正確な幅の型がありません。
私が見つけることができた次善のもの (移植性の観点から) は、ライブラリからBoostの のcstdint.hpp実装でした。Boost.Integer
懸念
とはいえ、いくつかの問題があります。
Boosttypedefの実装は、boost namesapce( のようなものではなく) 内のすべての をダンプしboost::stdintます。これは完全に醜いです。usingこれは、関心のある型でのみ - ディレクティブを使用することを余儀なくされるか (これは余分なメンテナンス作業です)、全体boost namespaceをグローバル¹ スコープにする必要があるためです (これはnamespacesのポイントを無効にします)。 )。もちろん、たとえば、冗長にしboost::uint32_tてどこにでも入力することもできますが、これも将来にあまり適していません²。
質問
私は基本的にアドバイスを探しています。これらのまだ標準化されていない (とにかく C++ '03 ではない) 型を可能な限り透過的に利用するための最良の方法は何ですか?
このヘッダーを使用している、または独自のヘッダーを作成している方は、これらのタイプをどのように使用しますか? boost namespaceをやみくもに globalにマージし、namespaceすべての前に " "を付けboost::、 をラップするヘッダーを書きましたか?Boost.Integercstdint.hpp
アドバイスをいただければ幸いです。
最後に、すべてのことを言いました (ちなみに、これは暴言ではありません)。私は数学集約的なコードを書いているので、幅の保証は私にとって重要です。
明確化
class template1 - グローバル スコープは、これらの型を引数として受け取る関数 / を作成するときの唯一のオプションです。
2 - 標準の次のイテレーションが にラップstdint.hされるcstdintとき、私は " " で始まる一連のコードで立ち往生しますboost::。これは、まったく役に立たない追加の依存関係 (つまり、「boost/cstdint.hpp」) になります。