In my opinion, a struct should not be treated as a full C++ class even if a compiler allows it.
In my opinion, structs should never be used for anything other than a class (in C++).
I didn't read all of the responses but there are only 2 differences between a struct and a class in C++. Both are default access levels: one for inheritance and one for members.
In my opinion, structs should be used when you have a structure*, and classes should be used when you have a class**.
*structure = a series of freely modifiable variables that are grouped together because they are related somehow. IE: a group of several different items.
** class = a chunk of encapsulated code/data that works to simulate a singular "thing". IE: one sigular item that has several different parts.