パックされた POD 構造/クラスを取り、それをメモリ ブロックにコピーするコードがあります。
struct A
{
int a;
int b;
} a;
memcpy(mymemoryblock, (void *)&a, sizeof(A));
// later I get a reply and...
memcpy((void *)&a, mymemoryblock, sizeof(A));
これは POD タイプのデータに対してのみ有効であり、POD 性をテストできる方法があるかどうか知りたいことです。誰かが誤ってこのクラスにメンバー関数を追加した場合、memcpy 操作は無効になりますが、コンパイルは可能です。これにより、バグの検出が非常に困難になります。
is_POD_type(A) 関数、または実行時またはコンパイル時に PODness を検出するために使用できるその他のトリックはありますか?