My question somewhat overlaps with this and several other similar ones. Those have some great answers, but I\'ve read them and I\'m still confused, so please don\'t consider
Yes, A inst4 (); is treated as a function declaration. std::string str(); should be the same (i.e. I think you mistakenly thought it worked).
A inst4 ();
std::string str();
Apparently (from here), C++03 will have inst3._a be 0, but C++98 would have left it uninitialized.
inst3._a