25 template<
typename Iterable,
27 typename = decltype(
std::end (std::declval<Iterable>()))>
34 constexpr
bool operator==(
const iterator& other)
const {
35 return iter == other.iter;
37 constexpr
bool operator!=(
const iterator& other)
const {
38 return iter != other.iter;
48 constexpr
void operator++() {
53 return std::tie(i, *iter);
57 struct iterable_wrapper {
60 constexpr
auto begin() {
63 constexpr
auto end() {
68 return iterable_wrapper{std::forward<Iterable>(iterable)};
constexpr auto enumerate(Iterable &&iterable)
Heavily inspired by Nathan Reed's blog post: Python-Like enumerate() In C++17 http://reedbeta....
constexpr bool operator==(PoolIndex i, PoolIndex j)
constexpr bool operator!=(PoolIndex i, PoolIndex j)
constexpr uint128 operator*(const uint128 &a, const uint128 &b)
constexpr auto begin(const zstring_view &x)
constexpr auto end(const zstring_view &x)