Default values to bitfield elements

The syntax for bit field initialization is

 struct S {int i: 5 = 42;};

and is only available in c++20: -std=c++2a for now


No, bit-fields do not allow an initializer as part of the member declaration. You can see this in the part of the grammar that describes class members (C++11 and later, [class.mem]):

member-declarator:
    declarator virt-specifier-seqopt pure-specifieropt
    declarator brace-or-equal-initializeropt
    identifieropt attribute-specifier-seqopt : constant-expression

The third form is the grammar for a bit-field declaration, but only the second form lists the brace-or-equal-initializer.