我無非是想之間傳遞的時間來測量到的時間點:爲什麼std :: chrono :: time_point不喜歡算術?
#include <iostream>
#include <chrono>
int main(){
// std::chrono::time_point start1; // <-- doesn't work
// std::chrono::time_point end1; // <-- doesn't work
auto start1; // <-- does work
auto end1; // <-- does work
start1 = std::chrono::high_resolution_clock::now();
std::cout<<"Hello, World!"<<std::endl;
end1 = std::chrono::high_resolution_clock::now();
std::cout << std::chrono::duration_cast<std::chrono::microseconds>(end1 - start1).count() << std::endl;
return 0;
}
...我注意到start1
和end1
必須與auto
類型定義。如果我明確定義它們的類型爲std::chrono::time_point
,則表達式end1 - start1
會給我「二元運算符」 - '不能應用於...「。
爲什麼我可以在start1
和end1
上使用算術運算符,如果它們被定義爲auto
? auto
是否會自動將它們轉換成與算術運算符兼容的東西?我認爲auto
應該只是編譯器的簡寫,看看std::chrono::high_resolution_clock::now()
返回類型是什麼?!
[''time_point'](http://en.cppreference.com/w/cpp/chrono/time_point)是一個類模板。 – juanchopanza
如果你使用'std :: chrono :: high_resolution_clock :: time_point',它可以工作[fine。](http://coliru.stacked-crooked.com/a/3161124e7abf8f26) – jaggedSpire
@jaggedSpire哦天啊!謝謝......一定要監督這個...... – daniel451