Storing a struct with bitfields in PROGMEM

Original question was answered and I came on that thread by googling. Figured I might aswell ask it here to not make useless threads. Guess moderation here is different than I'm used too.

Anyways, memcpy_P did the trick. For future visitors, this code works.

#include <avr/pgmspace.h>
#include <Arduino.h>

struct ui16s {

    uint16_t ui:16;
    uint8_t scale:7;
    uint8_t sign:1;

};

const uint8_t length = 6;

const uint16_t means[] PROGMEM = {
    10, 20, 32, 29, 37, 28
};

const struct ui16s ci_vals[] PROGMEM = {
    {10, 2, 0b0}, {20, 4, 0b1}, {32, 2, 0b1}, 
    {11, 1, 0b0}, {15, 0, 0b1}, {24, 0, 0b0}
};

void setup() {

    Serial.begin(9600);

    delay(1000);

    uint8_t i = 0;
    for (; i < length; ++i) {

    	struct ui16s val;
    	memcpy_P(&val, ci_vals + i, sizeof(struct ui16s));

        Serial.println(pgm_read_word(means + i));
        Serial.print(val.sign ? "-" : "");
        Serial.print(val.ui);
        Serial.print(" / 2 ^ ");
        Serial.println(val.scale);
        Serial.println();

    }

}

void loop() {

}