im have simple function like
void foo(std::chrono::milliseconds ms) {
std::cout << ms.count() << " milliseconds" << std::endl;
}
and next im calling them by
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 im wanna to use this function with:
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 isnt work. So, question, can im 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 ?
Im trying all described below/above