簡體   English   中英

chrono:如何從兩個高分辨率時間點計算毫秒持續時間?

[英]chrono: How can I calculate a millsecond duration from two high resolution time points?

我正在嘗試從兩個計時time_points計算一個計時duration

#include <chrono>
using namespace std;
using namespace std::chrono;

int main() {
    time_point<high_resolution_clock> start = high_resolution_clock::now();
    time_point<high_resolution_clock> end = high_resolution_clock::now();
    duration<milli> difference = duration_cast<milli>(end - start);
    return 0;
}

http://ideone.com/wUKb9S

我對編譯器錯誤消息完全感到困惑:

Compilation error   time: 0 memory: 0 signal:0

prog.cpp: In function 'int main()':
prog.cpp:9:63: error: no matching function for call to 'duration_cast(std::__success_type<std::chrono::duration<long long int, std::ratio<1ll, 1000000000ll> > >::type)'
  duration<milli> difference = duration_cast<milli>(end - start);
                                                               ^
prog.cpp:9:63: note: candidate is:
In file included from prog.cpp:2:0:
/usr/include/c++/4.9/chrono:194:7: note: template<class _ToDur, class _Rep, class _Period> constexpr typename std::enable_if<std::chrono::__is_duration<_Tp>::value, _ToDur>::type std::chrono::duration_cast(const std::chrono::duration<_Rep, _Period>&)
       duration_cast(const duration<_Rep, _Period>& __d)
       ^
/usr/include/c++/4.9/chrono:194:7: note:   template argument deduction/substitution failed:
/usr/include/c++/4.9/chrono: In substitution of 'template<class _ToDur, class _Rep, class _Period> constexpr typename std::enable_if<std::chrono::__is_duration<_Tp>::value, _ToDur>::type std::chrono::duration_cast(const std::chrono::duration<_Rep, _Period>&) [with _ToDur = std::ratio<1ll, 1000ll>; _Rep = <missing>; _Period = <missing>]':
prog.cpp:9:63:   required from here
/usr/include/c++/4.9/chrono:194:7: error: no type named 'type' in 'struct std::enable_if<false, std::ratio<1ll, 1000ll> >'

兩個time_point之間的差異不是持續時間嗎? 我不能在持續時間類型之間進行轉換以獲得毫秒的持續時間表示嗎?

millistd::ratio<1, 1000>的typedef,對於duration不是有效的表示形式,應該類似於duration<long, milli>或只是std::chrono::milliseconds

auto difference = duration_cast<milliseconds>(end - start);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM