20#include <ion/detail/macros.hpp>
30template <
class Clock,
class Duration>
31void WaitUntil(std::chrono::time_point<Clock, Duration>
const& time)
noexcept(
32 std::is_nothrow_invocable_v<
decltype(&Clock::now), Clock>);
40template <
class Rep,
class Period>
41void WaitFor(std::chrono::duration<Rep, Period>
const& duration)
noexcept;
43template <
class Clock,
class Duration>
44void WaitUntil(std::chrono::time_point<Clock, Duration>
const& time)
noexcept(
45 std::is_nothrow_invocable_v<
decltype(&Clock::now), Clock>) {
46 while (Clock::now() < time) {
51template <
class Rep,
class Period>
52void WaitFor(std::chrono::duration<Rep, Period>
const& duration)
noexcept {
53 WaitUntil(std::chrono::steady_clock::now() +
54 std::chrono::duration_cast<std::chrono::steady_clock::duration>(duration));