C++ std::chrono::duration::count函数的实际结果类型是什么

C++ std::chrono::duration::count函数的实际结果类型是什么,c++,c++11,chrono,C++,C++11,Chrono,在以下情况下,std::chrono::duration::count函数的实际结果类型是什么: std::chrono::duration_cast<std::chrono::milliseconds>(end - begin).count(); std::chrono::duration_cast(结束-开始).count(); 它就像是某种rep类型,但它实际上是什么?我需要知道确切的类型才能将其传递给其他语言。我可以将其转换为long,例如?从doc,count返回rep

在以下情况下,
std::chrono::duration::count
函数的实际结果类型是什么:

std::chrono::duration_cast<std::chrono::milliseconds>(end - begin).count();
std::chrono::duration_cast(结束-开始).count();

它就像是某种
rep
类型,但它实际上是什么?我需要知道确切的类型才能将其传递给其他语言。我可以将其转换为
long
,例如?

从doc,
count
返回
rep
类型,该类型来自
模板类持续时间

而且

std::chrono::milliseconds   duration</*signed integer type of at least 45 bits*/, std::milli>
std::chrono::毫秒持续时间

因此它是特定于实现的。

类型是
std::chrono::millides::rep
。您可以使用来检查此类型。例如:

#include "type_name.h"
#include <chrono>
#include <iostream>

int
main()
{
    std::cout << type_name<std::chrono::milliseconds::rep>() << '\n';
}

根据我的理解,它似乎是一个至少45位的有符号整数类型。它说你正在转换为“std::chrono::millizes”。这就是为什么
自动
是一个好主意,有时候你根本不需要关心:-)好吧,那我该怎么办?我需要将这个结果类型传递给另一种语言,所以我至少需要知道它有多大。这取决于。您可能需要rep
type
的代码依赖项来提供适当的类型,或者使用您的类型并将结果“转换”为您的类型(如
std::int64\t
)(注意签名溢出:/)。好的,我该怎么办?我需要将此结果类型传递给另一种语言,这样我至少需要知道它有多大。请注意,正确的类型是第一个给定的类型,
std:chrono:millizes:rep
。例如,如果一个实现想要提供足够的位来测量从大爆炸到热死的毫秒,那么使用
long
很可能是不可移植的,至于将它传递给另一种语言,只要有一些通用的表示。我想,如果我发明了这个,我会称之为“我不知道”,比如“文本”:-请注意笑脸,我无意冒犯。<代码> sieOS/<代码>是获取一个类型或变量字节数的C++方式。文本是在语言之间传递的好方法,除非事先知道两种语言对类型共享相同的二进制表示。
long long