On Mon, Jul 08, 2019 at 03:56:51PM -0600, Martin Sebor wrote:
> A couple of GCC's Coding Conventions call to
> 
>   1) Use the struct keyword for plain old data (POD) types.
>      https://www.gnu.org/software/gcc/codingrationale.html#struct
> 
> and
> 
>   2) Use the class keyword for non-POD types.
>      https://www.gnu.org/software/gcc/codingconventions.html#Class_Use

This is a coding convention that has been added without any discussion
whatsoever on that, maybe it was some Google internal coding convention or
something, do we really want to enforce it rather than discuss
and decide what we actually want?

With my limited C++ knowledge, the main distinction between struct and class
when both can appear interchangeably is that struct defaults to public:
and class defaults to private:, and I think it is best to use those that
way, rather than having tons of class ... { public: ... } everywhere.

There are many C++ class boolean properties, rather than just
POD vs. non-POD and we could pick any of them instead of this particular one
for the struct vs. class distinction if we wanted to enforce it, but why?

I'd just arrange that when being compiled with clang we compile with
-Wno-mismatched-tags to get rid of their misdesigned warning and not add
such misdesigned warning to GCC, that will just help people spread this
weirdo requirement further.

        Jakub

Reply via email to