![](/img/trans.png)
[英]What is the actual result type of std::chrono::duration::count function
[英]Template function with chrono::duration parameter and returning result of chrono::duration::count
我正在嘗試編寫一個函數,允許用戶指定chrono::duration
如chrono::seconds
並返回chrono::duration::count
。
我可以使用以下模板功能執行此操作:
template<typename D, typename Rep>
Rep getTimeSinceStart(){
return chrono::duration_cast<D>(chrono::steady_clock::now() - start).count();
};
要調用此函數,我必須為Rep
指定類型。 例如,假設我有一個名為timer
的對象,如果Rep
是long long
:
long long sinceStart = timer.getTimeSinceStart<chrono::seconds, long long>();
但是,有一種方法可以只指定chrono::duration
嗎?
我在想類似的東西:
template<typename D>
D.rep getTimeSinceStart(){
return chrono::duration_cast<D>(chrono::steady_clock::now() - start).count();
};
這樣我可以打電話給:
long long sinceStart = timer.getTimeSinceStart<chrono::seconds>();
像這樣的東西:
#include <thread>
#include <iostream>
#include <chrono>
const std::chrono::steady_clock::time_point start = std::chrono::steady_clock::now();
template<typename D>
typename D::rep getTimeSinceStart(){
return std::chrono::duration_cast<D>(std::chrono::steady_clock::now() - start).count();
};
int main (int argc, char **argv)
{
std::this_thread::sleep_for(std::chrono::seconds(2));
long long sinceStart = getTimeSinceStart<std::chrono::seconds>();
std::cout << "since start: " << sinceStart << std::endl;
}
在上面的代碼中, start
是全局的-您將希望使其成為您的類的成員。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.