numeric_limits 特性は、さまざまな型情報を取得する一般的な方法であると想定されており、次のようなことができます。
template<typename T>
T min(const std::vector<T>& vect)
{
T val = std::numeric_limits<T>::min();
for(int i=0 ; i<vect.size() ; i++)
val = max(T, vect[i]);
return val;
}
問題は、(少なくとも MS Visual Studio 2008 を使用して) numeric_limits<int>::min() が最小の負の数を返し、numeric_limits<double>::min() が最小の正の数を返すことです!
この設計の背後にある理論的根拠を知っている人はいますか? numeric_limits を使用するより良い (推奨される) 方法はありますか? 上記の特定の関数では、もちろん T を vect[0] に初期化できますが、それは私が探している答えではありません..
こちらの(浮動小数点固有の)議論も参照 してください