46 throw std::out_of_range(
"Iterator out of range!");
59 throw std::out_of_range(
"Iterator out of range!");
67 throw std::out_of_range(
"Iterator out of range!");
A generator represents a coroutine type that produces a sequence of values of type T,...
Definition Generator.hpp:50
decltype(std::declval< const Generator * >() ->generate()) Type
Definition Utility.hpp:18
An iterator that can be used to "drive" a generator.
Definition Iterator.hpp:19
const Iterator::value_type * operator->() const
Get pointer to the current generated value.
Definition Iterator.hpp:65
std::ptrdiff_t difference_type
Definition Iterator.hpp:26
value_type * pointer
Definition Iterator.hpp:27
bool operator==(const Iterator &that) const noexcept
Iterators are equal if both are out of range or both iterate the same generator.
Definition Iterator.hpp:73
const Iterator::value_type & operator*() const
Get reference to the current generated value.
Definition Iterator.hpp:57
typename GeneratedType< Generator >::Type value_type
Definition Iterator.hpp:25
GeneratedType< Generator >::Type value_
Definition Iterator.hpp:22
bool operator!=(const Iterator &that) const noexcept
Definition Iterator.hpp:75
Generator * mGenerator
Definition Iterator.hpp:21
Iterator(Generator &generator) noexcept
Iterator to the given generator.
Definition Iterator.hpp:34
Iterator & operator++()
Advance the iterator.
Definition Iterator.hpp:44
Iterator() noexcept
Creates a dummy end iterator.
Definition Iterator.hpp:31
value_type & reference
Definition Iterator.hpp:28
Definition AnyGenerator.hpp:12
Iterator< Generator > end(const Generator &) noexcept
Returns a dummy end iterator.
Definition Iterator.hpp:82
Iterator< Generator > begin(Generator &generator) noexcept
Will return an iterator to the generator.
Definition Iterator.hpp:79
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25