Сообщение Re[13]: memset(this, 0, sizeof(T)); от 23.11.2016 20:12
Изменено 23.11.2016 20:21 N. I.
uzhas:
U>я пытался найти в стандарте во что превращаются скалярные типы после memzero, но не смог найти =
Если существует значение, которое представляется полученной последовательностью нулевых unsigned char-ов, то в объекте будет храниться это самое значение. Иначе объект, наверное, прекращает существование в соответствии с [basic.life].
U>для каких standard-layout типов ясно определена семантика?
Для unsigned char определённо
U>например, для bool верно, что false прочитаю?
Если копирование false в массив unsigned char-ов образуется нолики (вряд ли есть реализации, где это не так), то да. Иначе формально там может получиться что угодно, насколько я вижу.
U>4 года не писал тут
Забанили за какой-то язвительный комментарий, решил отдохнуть
U>я пытался найти в стандарте во что превращаются скалярные типы после memzero, но не смог найти =
Если существует значение, которое представляется полученной последовательностью нулевых unsigned char-ов, то в объекте будет храниться это самое значение. Иначе объект, наверное, прекращает существование в соответствии с [basic.life].
U>для каких standard-layout типов ясно определена семантика?
Для unsigned char определённо
U>например, для bool верно, что false прочитаю?
Если копирование false в массив unsigned char-ов образуется нолики (вряд ли есть реализации, где это не так), то да. Иначе формально там может получиться что угодно, насколько я вижу.
U>4 года не писал тут
Забанили за какой-то язвительный комментарий, решил отдохнуть
Re[13]: memset(this, 0, sizeof(T));
uzhas:
U>я пытался найти в стандарте во что превращаются скалярные типы после memzero, но не смог найти =\
Если существует значение, которое представляется полученной последовательностью нулевых unsigned char-ов, то в объекте будет храниться это самое значение. Иначе объект, наверное, прекращает существование в соответствии с [basic.life].
U>для каких standard-layout типов ясно определена семантика?
Для unsigned char определённо
U>например, для bool верно, что false прочитаю?
Если std::memcpy-подобное копирование объекта, хранящего false, в массив unsigned char-ов образует нолики (вряд ли есть реализации, где это не так), то да. Если нолики получаются при копировании true, то будет true. Иначе формально там может получиться что угодно, насколько я вижу.
U>4 года не писал тут
Забанили за какой-то язвительный комментарий, решил отдохнуть
U>я пытался найти в стандарте во что превращаются скалярные типы после memzero, но не смог найти =\
Если существует значение, которое представляется полученной последовательностью нулевых unsigned char-ов, то в объекте будет храниться это самое значение. Иначе объект, наверное, прекращает существование в соответствии с [basic.life].
U>для каких standard-layout типов ясно определена семантика?
Для unsigned char определённо
U>например, для bool верно, что false прочитаю?
Если std::memcpy-подобное копирование объекта, хранящего false, в массив unsigned char-ов образует нолики (вряд ли есть реализации, где это не так), то да. Если нолики получаются при копировании true, то будет true. Иначе формально там может получиться что угодно, насколько я вижу.
U>4 года не писал тут
Забанили за какой-то язвительный комментарий, решил отдохнуть