¿Cómo puedo "anular" [] para aceptar dos argumentos en C ++?

Estoy tratando de crear una clase de vector de bits en C ++ para modelar algo de hardware. En la mayoría de los HDL (idiomas de descripción de hardware) que conozco, se hace referencia a bits específicos como este:

my_vector[bit_position]

y los sub-vectores se referencian así:

my_vector[msb:lsb]

o

my_vector[msb,lsb]

Quiero poder hacer algo similar con mi clase de vector de bits. Hay alguna manera de decirlooperator[] aceptar dos argumentos?

Las alternativas que he considerado son:

usando unrange método:

my_vector.range(msb,lsb)

usando una cadena y analizándola:

my_vector["msb:lsb"]

Pero ninguno de ellos es atractivo. El primero, porque es demasiado diferente de la forma en que está modelado en HDL, el segundo porque no me gusta tratar con cadenas cuando no tengo que hacerlo, y parece poco elegante.

¿Cuál es la mejor manera de hacer esto?

Respuestas a la pregunta(5)

Su respuesta a la pregunta