C++Guns – RoboBlog blogging the bot

18.08.2025

AVR #2 - deducing this and parameter pack

Filed under: Allgemein — Thomas @ 00:08

AVR, deducing this and parameter packs

Das Register DDRB ist ein special function register (SFR) mit der Addresse 0x17 und den Port Pins DDB und PB.

using DDRB_t = _SFR_t<0x17, DDB_t, PB_t>;

Der Type _SFR_t ist implementiert mittels Template Values für die Addresse und Variadic parameter packs für die erlaubten Port Pin Typen. Die Port Pin Typen werden an den Type BitOperationen weiter geleitet.

template<uint16_t addr, typename... Allowed>
struct _SFR_t : BitOperationen<Allowed...>

Der Typ BitOperationen nimmt als parameter pack eine menge von typen entgegen für welche die bit operationen erlaubt sind und in jeder member funktion wird der typ der member funktion gegen diese list gechekct

    template<typename Self, typename PX_t>
    requires (is_same_v<PX_t, Allowed> || ... )
    void operator|=(this Self&& self, PX_t PX) {
      *self |= PX.value;
    }

No Comments

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress