Minor C++ improvements

This is just some stuff found with clang-analyzer
The latest version of clang on OS-X Yosemite doesn't like empty structs.  It's easiest just to put something in them for everyone than to try to detect the compilers that care.  We can spare the extra 4 bytes.