1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
#ifndef INCLUDED_GENERATOR_H_
#define INCLUDED_GENERATOR_H_
template<typename T>
class [[nodiscard]] Generator
{
friend class Promise<T>;
using Handle = std::coroutine_handle<Promise<T>>;
Handle d_handle = 0;
public:
using promise_type = Promise<T>;
Generator() noexcept = default;
Generator(Generator &&other) noexcept;
~Generator();
Generator& operator=(Generator &&tmp) noexcept;
Iterator<T> begin();
Sentinel end() noexcept;
void swap(Generator &other) noexcept;
private:
explicit Generator(Handle handle) noexcept;
};
#include "generator.imp"
#endif
|