[英]std::chrono: add custom duration to time_point
以下代碼編譯( g++ 4.7.2
):
#include <chrono>
typedef std::chrono::duration< double > double_prec_seconds;
typedef std::chrono::time_point< std::chrono::system_clock > timepoint_t;
void do_something( const timepoint_t& tm )
{
// ...
}
int main( int argc, char** argv )
{
timepoint_t t0 = std::chrono::system_clock::now();
timepoint_t t1 = t0 + std::chrono::seconds(3);
// timepoint_t t3 = t0 + double_prec_seconds(3.14);
auto t3 = t0 + double_prec_seconds(3.14);
do_something( t1 );
}
我的問題是我不知道t3
有什么類型。 它不是timepoint_t
,並且使用明確給定的類型取消注釋行將無法編譯。 與函數調用相同:我不能用t3
調用do_something
。
所以我的問題是:
我知道我可以使用這樣的額外演員
// this works
timepoint_t t3 = t0 + std::chrono::duration_cast< std::chrono::milliseconds >(double_prec_seconds(3.14));
但我想避免這種情況。
先感謝您!
轉換失敗,因為沒有轉換
std::chrono::time_point< std::chrono::system_clock,
std::chrono::system_clock::duration >
至
std::chrono::time_point< std::chrono::system_clock,
std::chrono::duration< double > >
最簡單的方法是將double_prec_seconds
作為模板參數提供給time_point
,參見std :: chrono :: time_point
typedef std::chrono::time_point< std::chrono::system_clock,
double_prec_seconds > timepoint_t;
那么你已經有了適合t3
和do_something
類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.