我有简单的功能:
void foo(std::chrono::milliseconds ms) {
std::cout << ms.count() << " milliseconds" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
接下来我这样称呼他们:
int main() {
using namespace std::chrono_literals;
boo(3s);
boo(1h);
boo(100ms);
}
Run Code Online (Sandbox Code Playgroud)
输出很简单:
3000 milliseconds
3600000 milliseconds
100 milliseconds
Run Code Online (Sandbox Code Playgroud)
但是,如果我想像这样使用这个函数怎么办:
boo(3.5s);
boo(0.5s);
boo(0.3days);
Run Code Online (Sandbox Code Playgroud)
然后我编译错误。所以,我可以编写接收的函数chrono::duration:
3000 milliseconds
3600000 milliseconds
100 milliseconds
Run Code Online (Sandbox Code Playgroud)
然后3.5s会起作用,但1h或3.5h不起作用。那么,问题是,我可以编写通用函数将1s// 1.s/ 1m/ 1.5m/ 1h/ 1.5hetc 中的任何一个转换为毫秒吗?也许我可以创建chrono::seconds/小时的重载运算符?还是只是投、投、投?