// Using the Curiously Recurring Template Pattern to implement everything shared // by LowToHighBitIterator and HighToLowBitIterator, i.e. everything but operator*(). template <typename T, typename Iter> class BitIteratorBase {
static_assert(std::is_integral_v<T>, "T must be integral");
static_assert(std::is_unsigned_v<T>, "T must be unsigned");
public: using iterator_category = std::forward_iterator_tag; using value_type = uint32_t; using difference_type = ptrdiff_t; using pointer = void; using reference = void;
template <typename T> class LowToHighBitIterator : public BitIteratorBase<T, LowToHighBitIterator<T>> { public: using BitIteratorBase<T, LowToHighBitIterator<T>>::BitIteratorBase;
template <typename T> class HighToLowBitIterator : public BitIteratorBase<T, HighToLowBitIterator<T>> { public: using BitIteratorBase<T, HighToLowBitIterator<T>>::BitIteratorBase;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.