namespace std {
  template<>
  struct coroutine_handle<noop_coroutine_promise> : coroutine_handle<>
  {
    
    constexpr explicit operator bool() const noexcept;
    constexpr bool done() const noexcept;
    
    constexpr void operator()() const noexcept;
    constexpr void resume() const noexcept;
    constexpr void destroy() const noexcept;
    
    noop_coroutine_promise& promise() const noexcept;
    
    constexpr void* address() const noexcept;
  private:
    coroutine_handle(unspecified);
  };
}
constexpr explicit operator bool() const noexcept;
constexpr bool done() const noexcept;
constexpr void operator()() const noexcept;
constexpr void resume() const noexcept;
constexpr void destroy() const noexcept;
Remarks: 
If 
noop_coroutine_handle is converted to 
coroutine_handle<>,
calls to 
operator(), 
resume and 
destroy on that handle
will also have no observable effects
. noop_coroutine_promise& promise() const noexcept;
Returns: 
A reference to the promise object associated with this
coroutine handle
. constexpr void* address() const noexcept;
Remarks: 
A 
noop_coroutine_handle's 
ptr is always a
non-null pointer value
.