Сценарий
У меня есть функция 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' (aka 'duration>')
Вопрос:
Что я здесь не так делаю? Я хочу, чтобы вызывающий Fun
явно знал, что он использует std::chrono::milliseconds
, когда вызывает Fun
. Но компилятор не позволяет использовать std::chrono::milliseconds
в качестве параметра?
Как использовать std::chrono::milliseconds
в качестве параметра по умолчанию?
Environment
Compilerиспользуется лязг на macOS High Sierra