I have simple function:
void foo(std::chrono::milliseconds ms) {
std::cout << ms.count() << " milliseconds" << std::endl;
}
And next I'm calling them like this:
int main() {
using namespace std::chrono_literals;
boo(3s);
boo(1h);
boo(100ms);
}
Output is simple:
3000 milliseconds
3600000 milliseconds
100 milliseconds
But, what if I want to use this function like this:
boo(3.5s);
boo(0.5s);
boo(0.3days);
Then I have compile error.
So, I can write function who receive chrono::duration
:
template<class T>
void foo(std::chrono::duration<T> duration) {
std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(duration).count() << " milliseconds" << std::endl;
}
And then 3.5s
will work, but 1h
or 3.5h
doesn't work.
So, question, can I write universal function which convert any of 1s
/1.s
/1m
/1.5m
/1h
/1.5h
/etc into milliseconds?
Maybe I can create overloaded operators for chrono::seconds
/hours? Or just cast, cast, cast?
days
being defined here – Camelliacamelopard