を検討の期間コード以下:コンパイラが異なるため、引数の型のstd::min
の正しいバージョンをインスタンス化することはできませんのでのstd ::分::異なる種類
// durations are from std::chrono
auto a = get_duration_1(); // milliseconds, will vary in future versions
auto b = get_duration_2(); // seconds, will vary in future versions
auto c = std::min(a, b);
は、それがコンパイルされません。
もちろん、std::min<milliseconds>
を使用して明示的にタイプを指定することは可能です。このコードの将来のバージョンでは、タイプは異なります。正確な継続時間の種類を知らなくてもそれを行う一般的な方法は何ですか?
を(http://en.cppreference.com/w/cpp/algorithm/ min)を( '' std :: chrono :: duration')(http://en.cppreference.com/w/cpp/chrono/duration)(そしてそこにはありません) ")方法。そのような専門化を自分で行うことを除いて。そして、あなたが2つ以上の場所でそれを必要とするならば、そのような専門化は良いアイデアかもしれません。 –
[std :: min](http://en.cppreference.com/w/cpp/algorithm/min)には、異なる引数型を受け付けるバージョンはありません。引数のいずれかまたは両方をキャストします。 –
私は質問を変更して、ジェネリックコードの必要性が明示的に示されるようにします。 –