При поиске способа объединения sizeof(double)
char
с в double
, я прочитал в нескольких постах, что использование std::memcpy
было рекомендуемым способом:
char bytes[sizeof(double)];
// fill array
double d;
std::memcpy(&d, bytes, sizeof(double));
Однако,Интересно, почему дальнейшее использование d
может быть определено поведением.
Если бы это был не double
, а объект сложного класса, доступ к нему, безусловно, тоже не был бы определен, не так ли? Итак, почему так должно быть в случае double
.
Редактировать: Чтобы прояснить мою проблему, я хочу указать свою цель: я хотел бы найти способ объединить несколькоchar
s до double
и далее используйте этот дубль, не вызывая неопределенного поведения. Я не ожидаю, что будет указано значение double
. В любом случае, я считаю это невозможным, поскольку в стандарте ничего не говорится о размере, не говоря уже о битовой разметке double
. Тем не менее, я требую d
, чтобы некоторые действительные (т. Е. 'Доступные') double
-значения.