次の形式の関数が欲しいのですが
template <typename T, typename U>
U clipAndCast(T x)
{
...
return y;
},
ここで、yはタイプUへのxキャストですが、このキャストが明確に定義されるように、必要に応じてxがクリップされます。
これを行うライブラリまたはブースト関数はありますか?見つからないので、そうでない場合は、そのような関数を作成するための最良の方法は何ですか?
次の形式の関数が欲しいのですが
template <typename T, typename U>
U clipAndCast(T x)
{
...
return y;
},
ここで、yはタイプUへのxキャストですが、このキャストが明確に定義されるように、必要に応じてxがクリップされます。
これを行うライブラリまたはブースト関数はありますか?見つからないので、そうでない場合は、そのような関数を作成するための最良の方法は何ですか?
これを行う方法は、入力される値が出力されるタイプの最小値以上であり、出力されるタイプの最大値以下であるかどうかをテストすることです。とを使用std::numeric_limits<U>::min()
しstd::numeric_limits<U>::max()
て、最小値と最大値を取得できます。
Boost の Numerical Conversionsライブラリをご覧ください。