ついでにPODでなければバイナリーレベルでコピーできないという訳ではない
struct a() { // 非PODだがメモリコピー可能
 public: double v;
 private: double w;
};