Utility template definitions to allow for simpler type restrictions. More...
#include <iterator>#include <type_traits>Go to the source code of this file.
Classes | |
| struct | z::core::is_iterator< T, typename > |
| The default specialization for types that are not iterators. More... | |
| struct | z::core::is_iterator< T, std::void_t< decltype(std::begin(std::declval< T >()))> > |
| Template specialization for types that are iterators. More... | |
Namespaces | |
| namespace | z::core |
| Section containing core functions and classes. | |
Typedefs | |
| template<typename T> | |
| using | z::core::dereference = std::remove_const_t<std::remove_reference_t<decltype(*std::declval<decltype(std::declval<T>().begin())>())>> |
| The type of the dereferenced value from an iterable. This is used to determine the type of value that the generator will std::optional. | |
| template<typename T> | |
| using | z::core::iterator_value = std::remove_const_t<decltype(std::declval<T>().begin())> |
| The type of the value that an iterator generates. This is used to determine the type of iterator that the generator will use. | |
| template<typename T> | |
| using | z::core::const_iterator_value = decltype(std::declval<const T &>().begin()) |
| The type of a const iterator from a const reference to a container. This is used when iterating over a const reference to ensure proper const_iterator deduction. | |
Utility template definitions to allow for simpler type restrictions.