Информация об изменениях

Сообщение 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 года не писал тут


Забанили за какой-то язвительный комментарий, решил отдохнуть
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 года не писал тут


Забанили за какой-то язвительный комментарий, решил отдохнуть