Struct versus Class Default Access When Exposing Types Across a Library Boundary
The goal is to determine whether a library's public header should use struct or class when declaring a type that callers are expected to treat as opaque, given that the default member and base‑class access differ between the two keywords. When a struct is chosen for brevity, its members and base classes become public by default, which can unintentionally exp