#include <chrono>
void do_work(std::chrono::nanoseconds timeout) {
/* do smth */
}
int main() {
std::chrono::seconds my_timeout(std::chrono::seconds::max());
do_work(my_timeout);
}
Turns out, it IS undefined behavior. Where? In IMPLICIT conversation from seconds to nanoseconds! Timeout in 'do_work' is garbage now!
https://godbolt.org/z/rjqoWr9q4For me its obvious, that its standard library bug and standard must say what is expected behavior for this