Obtener el tamaño de un campo individual de un campo de estructura c ++

La versión corta es: ¿Cómo aprendo el tamaño (en bits) de un campo individual de un campo c ++?

Para aclarar, un ejemplo del campo del que estoy hablando:

struct Test {
    unsigned field1 : 4;  // takes up 4 bits
    unsigned field2 : 8;  // 8 bits
    unsigned field3 : 1;  // 1 bit
    unsigned field4 : 3;  // 3 bits
    unsigned field5 : 16; // 16 more to make it a 32 bit struct

    int normal_member; // normal struct variable member, 4 bytes on my system
};

Test t;
t.field1 = 1;
t.field2 = 5;
// etc.

Para obtener el tamaño de todo el objeto Test es fácil, solo decimos

sizeof(Test); // returns 8, for 8 bytes total size

Podemos obtener un miembro de estructura normal a través de

sizeof(((Test*)0)->normal_member); // returns 4 (on my system)

Me gustaría saber cómo obtener el tamaño de un campo individual, por ejemplo, Test :: field4. El ejemplo anterior para un miembro de estructura normal no funciona. ¿Algunas ideas? ¿O alguien sabe por qué no puede funcionar? Estoy bastante convencido de que sizeof no será de ayuda, ya que solo devuelve el tamaño en bytes, pero si alguien sabe lo contrario, soy todo oídos.

¡Gracias

Respuestas a la pregunta(6)

Su respuesta a la pregunta