> Flipping a "private:" to "public:" has no effect on the binary compatibility.
That's not the case on Windows. The access qualifier is part of the mangled name. https://en.wikiversity.org/wiki/Visual_C%2B%2B_name_mangling...
It's still an honor system. There's a way to generate code that will call the "private" or "protected" data/function even if it violates what's specified in the headers.
That shouldn't prevent the subversion of data members or inline functions, or the ability to add your own member functions to the class.
Because Badge is a template, this will produce a linker error (duplicate symbols).
Of course you can get around if you really, really want to. But I think this subthread is starting to split hairs.
Re:C++ Patterns: The Badge
by dearrifling on Wednesday June 12, 2019 @12:52AM
(#20161870)
It can change the "POD for the purpose of layout" status of a class on Itanium. It can change layout.
Flipping a "private:" to "public:" has no effect on the binary compatibility.