error: in void ?{}(B &b), field a2 used before being constructed