#include <chrono>
#include <ratio>
#include <stdexcept>
#include <iostream>
int main() {
try {
// Uncomment any of the following checks for a particular resolution in question
if(std::ratio_less_equal<std::nano,std::chrono::system_clock::period>::value) {
// if(std::ratio_less_equal<std::micro,std::chrono::system_clock::period>::value) {
// if(std::ratio_less_equal<std::milli,std::chrono::system_clock::period>::value) {
// if(std::ratio_less_equal<std::centi, std::chrono::system_clock::period>::value) {
throw std::runtime_error
("Clock doesn't meet the actual resolution requirements.");
}
}
catch(const std::exception& ex) {
std::cout << "Exception: '" << ex.what() << "'" << std::endl;
}
std::cout << "The curently available resolution is: "
<< std::chrono::system_clock::period::num << "/"
<< std::chrono::system_clock::period::den
<< " seconds" << std::endl;
}
CSNpbmNsdWRlIDxjaHJvbm8+CgkjaW5jbHVkZSA8cmF0aW8+CgkjaW5jbHVkZSA8c3RkZXhjZXB0PgoJI2luY2x1ZGUgPGlvc3RyZWFtPgoJCglpbnQgbWFpbigpIHsKCQl0cnkgewoJCQkvLyBVbmNvbW1lbnQgYW55IG9mIHRoZSBmb2xsb3dpbmcgY2hlY2tzIGZvciBhIHBhcnRpY3VsYXIgcmVzb2x1dGlvbiBpbiBxdWVzdGlvbgoJCQlpZihzdGQ6OnJhdGlvX2xlc3NfZXF1YWw8c3RkOjpuYW5vLHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnBlcmlvZD46OnZhbHVlKSB7CgkJCS8vIGlmKHN0ZDo6cmF0aW9fbGVzc19lcXVhbDxzdGQ6Om1pY3JvLHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnBlcmlvZD46OnZhbHVlKSB7CgkJCS8vIGlmKHN0ZDo6cmF0aW9fbGVzc19lcXVhbDxzdGQ6Om1pbGxpLHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnBlcmlvZD46OnZhbHVlKSB7CgkJCS8vIGlmKHN0ZDo6cmF0aW9fbGVzc19lcXVhbDxzdGQ6OmNlbnRpLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpwZXJpb2Q+Ojp2YWx1ZSkgewoJCQkgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yCgkJCSAgICAgICAgKCJDbG9jayBkb2Vzbid0IG1lZXQgdGhlIGFjdHVhbCByZXNvbHV0aW9uIHJlcXVpcmVtZW50cy4iKTsKCQkJfQoJCX0KCSAgICBjYXRjaChjb25zdCBzdGQ6OmV4Y2VwdGlvbiYgZXgpIHsKCSAgICAJc3RkOjpjb3V0IDw8ICJFeGNlcHRpb246ICciIDw8IGV4LndoYXQoKSA8PCAiJyIgPDwgc3RkOjplbmRsOwoJICAgIH0KCQlzdGQ6OmNvdXQgPDwgIlRoZSBjdXJlbnRseSBhdmFpbGFibGUgcmVzb2x1dGlvbiBpczogIiAKCQkgICAgICAgICAgPDwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6cGVyaW9kOjpudW0gPDwgIi8iIAoJCSAgICAgICAgICA8PCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpwZXJpb2Q6OmRlbgoJCSAgICAgICAgICA8PCAiIHNlY29uZHMiIDw8IHN0ZDo6ZW5kbDsKCX0K