Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      Standard library header <coroutine> (C++20)

      From cppreference.com
      <cpp‎ |header
       
       
      Standard library headers
       

      This header is part of thelanguage support library.

      Contents

      Includes

      (C++20)
      Three-way comparison operator support[edit]

      Classes

      trait type for discovering coroutine promise types
      (class template)[edit]
      used to refer to a suspended or executing coroutine
      (class template)[edit]
      hash support forstd::coroutine_handle
      (class template specialization)[edit]
      No-op Coroutines
      used for coroutines with no observable effects
      (class)[edit]
      std::coroutine_handle<std::noop_coroutine_promise>, intended to refer to a no-op coroutine
      (typedef)[edit]
      Trivial Awaitables
      indicates that an await-expression should never suspend
      (class)[edit]
      indicates that an await-expression should always suspend
      (class)[edit]

      Functions

      compares twocoroutine_handle objects
      (function)[edit]
      No-op Coroutines
      creates a coroutine handle that has no observable effects when resumed or destroyed
      (function)[edit]

      [edit]Synopsis

      #include <compare> namespace std{// coroutine traitstemplate<class R,class...ArgTypes>struct coroutine_traits; // coroutine handletemplate<class Promise=void>struct coroutine_handle; // comparison operatorsconstexprbool operator==(coroutine_handle<> x, coroutine_handle<> y)noexcept;constexpr strong_ordering operator<=>(coroutine_handle<> x,                                         coroutine_handle<> y)noexcept; // hash supporttemplate<class T>struct hash;template<class P>struct hash<coroutine_handle<P>>; // no-op coroutinesstruct noop_coroutine_promise; template<>struct coroutine_handle<noop_coroutine_promise>;using noop_coroutine_handle= coroutine_handle<noop_coroutine_promise>;   noop_coroutine_handle noop_coroutine()noexcept; // trivial awaitablesstruct suspend_never;struct suspend_always;}

      [edit]Class templatestd::coroutine_handle

      namespace std{template<>struct coroutine_handle<void>{// construct/resetconstexpr coroutine_handle()noexcept;constexpr coroutine_handle(nullptr_t)noexcept;    coroutine_handle& operator=(nullptr_t)noexcept; // export/importconstexprvoid* address()constnoexcept;staticconstexpr coroutine_handle from_address(void* addr); // observersconstexprexplicit operatorbool()constnoexcept;bool done()const; // resumptionvoid operator()()const;void resume()const;void destroy()const; private:void* ptr;// exposition only}; template<class Promise>struct coroutine_handle{// construct/resetconstexpr coroutine_handle()noexcept;constexpr coroutine_handle(nullptr_t)noexcept;static coroutine_handle from_promise(Promise&);    coroutine_handle& operator=(nullptr_t)noexcept; // export/importconstexprvoid* address()constnoexcept;staticconstexpr coroutine_handle from_address(void* addr); // conversionconstexpr operator coroutine_handle<>()constnoexcept; // observersconstexprexplicit operatorbool()constnoexcept;bool done()const; // resumptionvoid operator()()const;void resume()const;void destroy()const; // promise access    Promise& promise()const; private:void* ptr;// exposition only};}

      [edit]Classstd::noop_coroutine_promise

      namespace std{struct noop_coroutine_promise{};}

      [edit]Classstd::coroutine_handle<std::noop_coroutine_promise>

      namespace std{template<>struct coroutine_handle<noop_coroutine_promise>{// conversionconstexpr operator coroutine_handle<>()constnoexcept; // observersconstexprexplicit operatorbool()constnoexcept;constexprbool done()constnoexcept; // resumptionconstexprvoid operator()()constnoexcept;constexprvoid resume()constnoexcept;constexprvoid destroy()constnoexcept; // promise access    noop_coroutine_promise& promise()constnoexcept; // addressconstexprvoid* address()constnoexcept;private:    coroutine_handle(/* unspecified */);void* ptr;// exposition only};}

      [edit]Classstd::suspend_never

      namespace std{struct suspend_never{constexprbool await_ready()constnoexcept{returntrue;}constexprvoid await_suspend(coroutine_handle<>)constnoexcept{}constexprvoid await_resume()constnoexcept{}};}

      [edit]Classstd::suspend_always

      namespace std{struct suspend_always{constexprbool await_ready()constnoexcept{returnfalse;}constexprvoid await_suspend(coroutine_handle<>)constnoexcept{}constexprvoid await_resume()constnoexcept{}};}
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/header/coroutine&oldid=178394"

      [8]ページ先頭

      ©2009-2025 Movatter.jp