1 #pragma once // Source encoding: UTF-8 with BOM (π is a lowercase Greek "pi"). 7 #include <c/stddef.hpp> 37 template<
class Derived,
class Value_type_param >
42 {
return static_cast<Derived&>( *
this ); }
57 derived_self().advance();
58 return derived_self();
64 Derived original = derived_self();
65 derived_self().advance();
69 friend auto operator!=(
const Derived& a,
const Derived& b )
71 {
return not(a == b); }
auto operator++(int) -> Derived
Some_type * P_
Creates a raw pointer type.
Item_and_index value_type
A drop-in replacement for bool without implicit conversion from/to types other than bool.
auto operator++() -> const Derived &
friend auto operator!=(const Derived &a, const Derived &b) -> Truth
const value_type & reference
Truth is a drop-in replacement for bool without implicit conversion from/to types other than bool.
CPPX_USE_STD(basic_string, basic_string_view, bitset, char_traits, size)
Simple type builders Type_, P_, R_, Raw_array_ and Raw_array_of_.
Signed_< size_t > Size
A Signed_ equivalent of size_t.
forward_iterator_tag iterator_category
Macros for generating more concise and clear using statements, primarily $use_cppx and $use_std,...
Signed Size and Index, plus unsigned equivalents Unsigned_size and Unsigned_index.