CD
std::memcpy(поскольку
static_cast<unsigned char*>(&b),
static_cast<unsigned char*>(&a),
sizeof b);
std::memcpy
принимает void*
, а не unsigned char*
Но это не точно, и как трактовать код с точки зрения стандарта, если "исправить" это — я не знаю