Sorry for chiming in late -
Note this is extremely similar to IP addresses and I recommend we use the same solution. That is, there is a class HttpPriority which has just a type/style/family value and possibly a length. This is an abstract class like sockaddr (which no one actually instantiates). The family indicates the concrete type, which is something like Http2Priority or Http3Priority, etc., just like sockaddr_in and sockaddr_in6. When you call the priority getter, it returns a HttpPriority* which is a pointer to a concrete instance, the type of which is determined by the family. Again, just like getting an IP address from a socket.