18using dereference = std::remove_const_t<std::remove_reference_t<decltype(*std::declval<decltype(std::declval<T>().begin())>())>>;
26using iterator_value = std::remove_const_t<decltype(std::declval<T>().begin())>;
40template <
typename T,
typename =
void>
A wrapper for std::vector.
Definition array.hpp:75
decltype(std::declval< const T & >().begin()) const_iterator_value
The type of a const iterator from a const reference to a container. This is used when iterating over ...
Definition templates.hpp:34
std::remove_const_t< std::remove_reference_t< decltype(*std::declval< decltype(std::declval< T >().begin())>())> > dereference
The type of the dereferenced value from an iterable. This is used to determine the type of value that...
Definition templates.hpp:18
std::remove_const_t< decltype(std::declval< T >().begin())> iterator_value
The type of the value that an iterator generates. This is used to determine the type of iterator that...
Definition templates.hpp:26
The default specialization for types that are not iterators.
Definition templates.hpp:41