...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
#include <boost/coroutine/symmetric_coroutine.hpp> template< typename R > class symmetric_coroutine<>::yield_type { public: yield_type() noexcept; yield_type( yield_type const& other)=delete; yield_type & operator=( yield_type const& other)=delete; yield_type( yield_type && other) noexcept; yield_type & operator=( yield_type && other) noexcept; void swap( yield_type & other) noexcept; operator unspecified-bool-type() const; bool operator!() const noexcept; yield_type & operator()(); template< typename X > yield_type & operator()( symmetric_coroutine< X >::call_type & other, X & x); template< typename X > yield_type & operator()( symmetric_coroutine< X >::call_type & other); R get() const; };
operator unspecified-bool-type() const
If *this
refers to not-a-coroutine, the function returns
false
. Otherwise true
.
Nothing.
bool operator!() const
If *this
refers to not-a-coroutine, the function returns
true
. Otherwise false
.
Nothing.
yield_type &
operator()()
yield_type & operator()(); template< typename X > yield_type & operator()( symmetric_coroutine< X >::call_type & other, X & x); template<> yield_type & operator()( symmetric_coroutine< void >::call_type & other);
*this
is not a not-a-coroutine.
The first function transfers execution control back to the starting
point, e.g. invocation of symmetric_coroutine<>::call_type::operator().
The last two functions transfer the execution control to another
symmetric coroutine. Parameter x
is passed as value into other
's
context.
detail::forced_unwind
R get()
R symmetric_coroutine<R>::yield_type::get(); R& symmetric_coroutine<R&>::yield_type::get(); void symmetric_coroutine<void>yield_type::get()=delete;
*this
is not a not-a-coroutine.
Returns data transferred from coroutine-function via symmetric_coroutine<>::call_type::operator().
invalid_result