c++ - stl: задание произвольных временных промежутков


1

Подскажите, где-то видел реализацию, а сейчас не могу найти:

возможность задавать время как параметр с указанием единицы измерения, например

myfunc(10ms);
myfunc(3h);

и т.д.

а также перевода указанных значений в секунды (причем не только целочисленные. например 0.17, если указано 17ms)

Источник
  •  498
  •  1
  • 18 янв 2019 2019-01-18 12:01:16

1 ответ

1
using namespace std::chrono_literals;

void myFunc(const std::chrono::duration<double, std::ratio<1, 1>>& duration)
{
    std::cout << "duration is: " << duration.count() << std::endl;
}

int main(int argc, const char * argv[])
{
    myFunc(1ms);
    myFunc(1s);
    myFunc(1min);
    myFunc(1h);

    system("pause");
}

Вывод:

duration is: 0.001
duration is: 1
duration is: 60
duration is: 3600

https://en.cppreference.com/w/cpp/chrono/duration/duration
https://en.cppreference.com/w/cpp/numeric/ratio/ratio

using namespace std::chrono_literals добавь, а то не заработает... — 18 янв 20192019-01-18 12:25:39.000000