[coroutine.syn] # 17 Language support library [[support]](./#support) ## 17.13 Coroutines [[support.coroutine]](support.coroutine#coroutine.syn) ### 17.13.2 Header synopsis [coroutine.syn] [🔗](#header:%3ccoroutine%3e) // all freestanding#include // see [[compare.syn]](compare.syn "17.12.1 Header synopsis")namespace std {// [[coroutine.traits]](coroutine.traits "17.13.3 Coroutine traits"), coroutine traitstemplatestruct coroutine_traits; // [[coroutine.handle]](coroutine.handle "17.13.4 Class template coroutine_­handle"), coroutine handletemplatestruct coroutine_handle; // [[coroutine.handle.compare]](coroutine.handle.compare "17.13.4.8 Comparison operators"), comparison operatorsconstexpr bool operator==(coroutine_handle<> x, coroutine_handle<> y) noexcept; constexpr strong_ordering operator<=>(coroutine_handle<> x, coroutine_handle<> y) noexcept; // [[coroutine.handle.hash]](coroutine.handle.hash "17.13.4.9 Hash support"), hash supporttemplate struct hash; template struct hash>; // [[coroutine.noop]](coroutine.noop "17.13.5 No-op coroutines"), no-op coroutinesstruct noop_coroutine_promise; template<> struct coroutine_handle; using noop_coroutine_handle = coroutine_handle; noop_coroutine_handle noop_coroutine() noexcept; // [[coroutine.trivial.awaitables]](coroutine.trivial.awaitables "17.13.6 Trivial awaitables"), trivial awaitablesstruct suspend_never; struct suspend_always;}