0

次の形式の関数が欲しいのですが

template <typename T, typename U>
U clipAndCast(T x)
{
  ... 
  return y;  
 }, 

ここで、yはタイプUへのxキャストですが、このキャストが明確に定義されるように、必要に応じてxがクリップされます。

これを行うライブラリまたはブースト関数はありますか?見つからないので、そうでない場合は、そのような関数を作成するための最良の方法は何ですか?

4

2 に答える 2

1

これを行う方法は、入力される値が出力されるタイプの最小値以上であり、出力されるタイプの最大値以下であるかどうかをテストすることです。とを使用std::numeric_limits<U>::min()std::numeric_limits<U>::max()て、最小値と最大値を取得できます。

于 2013-01-31T16:24:06.443 に答える
1

Boost の Numerical Conversionsライブラリをご覧ください。

于 2013-02-01T07:29:50.853 に答える