C++11 如何转换std::chrono::duration<;双精度,标准::毫度>;加倍

C++11 如何转换std::chrono::duration<;双精度,标准::毫度>;加倍,c++11,C++11,我发现std::chrono有些混乱和阻碍。我想使用实值毫秒,最后得到0.7、6.45或13.3之类的值,我可以将这些值视为double值 我只想从两个time\u点开始值,并将它们之间经过的时间作为double返回。怎么用?这不起作用: using std; using std::chrono; high_resolution_clock::time_point t1( high_resolution_clock::now() ); // spend some time doing somet

我发现
std::chrono
有些混乱和阻碍。我想使用实值毫秒,最后得到0.7、6.45或13.3之类的值,我可以将这些值视为
double

我只想从两个
time\u点开始
值,并将它们之间经过的时间作为
double
返回。怎么用?这不起作用:

using std;
using std::chrono;
high_resolution_clock::time_point t1( high_resolution_clock::now() );
// spend some time doing something...
high_resolution_clock::time_point t2( high_resolution_clock::now() );
const duration<double,milli> elapsedTime( t2 - t1 );
const double timeAsDouble( static_cast<double>( elapsedTime ) ); // no conversion available :-(
// go on to use or return timeAsDouble;

那么,将看起来应该是一个
double
。。。变成一个
double

也许你在找
std::chrono::duration::count()


此外,值得一提的是,缺少乘法运算符的一个原因非常明显:当您对值进行乘法时,也会对单位进行乘法,例如10秒x 10秒=100平方秒。这反过来又会导致大量问题,如单位转换(例如,1平方秒=1000000平方毫秒,而不是1000),这远远超出了std::chrono的预期范围。

您能提供此答案的来源吗?我一直在想count()的返回类型是什么,而且总是使用auto。我能找到的只有这个:。
auto timeSpan( duration<double,std::milli>( 0.8 ) );
auto spanSquared( timeSpan*timeSpan );    // ???