考慮的持續時間下面的代碼:的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
正確版本。
當然,現在可以使用std::min<milliseconds>
明確指定類型。在此代碼的將來版本中,類型會有所不同。在不知道確切持續時間類型的情況下,通用的方法是什麼?
如果沒有指定,['標準:: min']現有的專業化(http://en.cppreference.com/w/cpp/algorithm/分鐘)[[std :: chrono :: duration]](http://en.cppreference.com/w/cpp/chrono/duration)(並沒有),那麼沒有沒有通用(和「好「) 辦法。除了自己做這樣一個專業。如果你在多個地方需要它,那麼這樣的專業化可能是一個好主意。 –
[std :: min](http://en.cppreference.com/w/cpp/algorithm/min)沒有接受不同參數類型的版本。要麼拋出其中一個參數,要麼兩者兼有。 –
我更改了問題,以便明確顯示對通用代碼的需求。 –