У меня есть код, который принимает упакованную структуру/класс 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-ness. Если кто-то случайно добавляет функцию-член в этот класс, операции memcpy становятся недействительными, но все же компилируемыми. Это приводит к очень трудному обнаружению ошибок.
Есть ли функция is_POD_type (A) или какой-либо другой трюк, который можно использовать для обнаружения PODness во время выполнения или времени компиляции?