17 Language support library [support]

17.12 Coroutines [support.coroutine]

17.12.5 Trivial awaitables [coroutine.trivial.awaitables]

namespace std {
  struct suspend_never {
    constexpr bool await_ready() const noexcept { return true; }
    constexpr void await_suspend(coroutine_handle<>) const noexcept {}
    constexpr void await_resume() const noexcept {}
  };
  struct suspend_always {
    constexpr bool await_ready() const noexcept { return false; }
    constexpr void await_suspend(coroutine_handle<>) const noexcept {}
    constexpr void await_resume() const noexcept {}
  };
}
[Note
:
The types suspend_­never and suspend_­always can be used to indicate that an await-expression should either never suspend or always suspend, and in either case not produce a value.
— end note
]