场景
我有一个 C++ 函数,它接受一个参数作为 std::chrono::milliseconds
。这基本上是一个超时值,并且它是默认参数,默认情况下设置为某个值。
代码
#include <iostream>
#include <chrono>
void Fun(const std::chrono::milliseconds someTimeout = std::chrono::milliseconds(100)) {
if (someTimeout > 0) {
std::cout << "someNumberInMillis is: " << someNumberInMillis.count() << std::endl;
}
}
int main() {
unsigned int someValue = 500;
Fun(std::chrono::milliseconds(someValue))
}
问题
以上的代码都没有问题,但是当我给Fun
函数传入一个值时,编译失败并出现以下错误:
无法将'bool'转换为'std::chrono::milliseconds'(也就是'duration>')
问题:
我在哪里出错了?我想让调用Fun
的函数明确知道它在调用Fun
时使用了std::chrono::milliseconds
。但是编译器似乎不允许将std::chrono::milliseconds
作为参数使用?
如何将std::chrono::milliseconds
作为默认参数使用?
环境
使用的编译器是macOS High Sierra上的clang。
someNumberInMillis
从哪里来?当我修复这些和其他明显的语法错误时,GCC9对我来说编译得很好。 - Toby Speight