Generator

namespace tnt
template<typename T>
class generator

Public Functions

generator(generator const&) = delete
generator(generator &&g)
~generator() noexcept
T current_value() const noexcept
bool move_next() noexcept
iterator begin() noexcept
iterator end() const noexcept

Private Functions

generator(std::coroutine_handle<promise_type> h)

Private Members

std::coroutine_handle<promise_type> coro
struct iterator

Public Types

using iterator_category = std::input_iterator_tag
using value_type = T
using difference_type = std::ptrdiff_t
using pointer = T*
using reference = T&

Public Functions

iterator(std::nullptr_t) noexcept
iterator(std::coroutine_handle<typename generator<T, Alloc>::promise_type> handle) noexcept
iterator &operator++() noexcept
iterator operator++(int) = delete
T const &operator*() const noexcept
T const *operator->() const noexcept
bool operator==(iterator const &rhs) const

Public Members

std::coroutine_handle<typename generator<T>::promise_type> coro
struct promise_type

Public Functions

std::suspend_always initial_suspend() const noexcept
std::suspend_always final_suspend() const noexcept
generator<T> get_return_object() noexcept
void unhandled_exception() const noexcept
std::suspend_never return_void() const noexcept
std::suspend_always yield_value(T const &val) noexcept

Private Members

T const *value
friend generator< T >