即使只是想上手,我得到一個錯誤與此代碼:如何編寫一個函數,該函數需要任何std :: chrono :: duration(1ms,4s,7h)並將秒作爲浮點數來獲取?
note: candidate template ignored: could not match 'double' against 'long'
::
#include <numeric>
#include <chrono>
using namespace std::chrono_literals;
// how to write a function that will take any duration and turn it
// into a float representation of seconds?
template <class T>
void go(std::chrono::duration<double, T> d) {
// what I want to do (that may not work because I haven't gotten this far):
float seconds = std::chrono::duration_cast<std::chrono::seconds>(d);
}
int main()
{
go(1ms);
go(1s);
}
'count'似乎並沒有被很好地命名。 :) –
我有一個函數,在超時時創建,只是想能說.timeout(1ms)或超時(1min)。我不知道你可以接受它作爲一個持續時間。這使事情變得更好,而不必使用模板。 –
xaxxon
這是爲什麼這樣工作:當不是'duration'的'duration '被傳遞給'go()'時,編譯器試圖使用'duration '將持續時間轉換爲時間長度 _converting構造函數_。持續時間的轉換構造函數之一是模板化的,以接受任何類型的持續時間。這是用來將'持續時間'轉換成'持續時間',然後一切按預期工作。 –
md5i