コマンドライン引数を取得して使用している状況がありますboost::lexical_cast<unsigned long>(my_param)
。my_param の負の値によって lexical_cast がスローされることを期待していましたが、代わりに、-1 が になるように喜んで変換されます18446744073709551615
。unsigned long の最大値は 2^32-1 であり、unsigned long long のように見えます。
したがって、char * 入力を unsigned long にキャストするよりスマートな方法、または大きな unsigned long long に変装して負の値を受け入れていないことを確認する方法を探しています。