bool is_sentinel() const { return milliseconds==~uintmax_t(0); }
私はthread_data.hppでこのコード行を見つけましたが、なぜ -1 ではなく〜uintmax_t(0)ですか?
-1
〜uintmax_t(0)
編集:
理由がコンパイラの警告を避けるのであれば、なぜ使用しないのですか?
std::numeric_limits(decltype(milliseconds)>::max()
?
最初にuintmax_tを使用する理由の1つは、最大のタイプが何であるかわからないということです。それは unsigned long か unsigned long long ですか?
unsigned long
unsigned long long
私の推測では、大きな符号なしの値を生成するために〜uintmax_t(0)を使用すると、最も多くのコンパイラで警告の数が最小になります。
( -1ull )の符号なしの値にマイナスを使用すると、符号なしの結果が得られます。
-1ull
constexpr
~uintmax_t(0) is the simplest way to produce an all-ones value of type uintmax_t that does not produce compiler warnings.
~uintmax_t(0)
uintmax_t
uintmax_t(-1)
milliseconds は符号なしなので、 -1 と比較すると意味がありません。
milliseconds