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