VS
http://eel.is/c++draft/conv.qual#2
Size: a a a
VS
LA
std::byte
, либо динамический типVS
std::byte
, либо динамический типLA
VS
KO
KO
h
bit_cast
VS
T
signed T
unsigned T
char
unsigned char
std::byte
KO
KO
KO
LA
m
T
, она инвалидирует все закешированные значения T
, потому что возможно мы только что изменили одно из них. Если мы пишем в char*
мы вынуждены инвалидировать закешированные значения _всех_ типов, потому что мы могли изменить любой из них. Тоже самое происходит и в обратном направлении: при записи по любому указателю мы инвалидируем все буферы char
.char
накладывает штрафы на производительность. Поэтому строки уводят от использования char
в сторону char8_t
, а для сырых данных предлагают использовать std::byte
.KO
T
, она инвалидирует все закешированные значения T
, потому что возможно мы только что изменили одно из них. Если мы пишем в char*
мы вынуждены инвалидировать закешированные значения _всех_ типов, потому что мы могли изменить любой из них. Тоже самое происходит и в обратном направлении: при записи по любому указателю мы инвалидируем все буферы char
.char
накладывает штрафы на производительность. Поэтому строки уводят от использования char
в сторону char8_t
, а для сырых данных предлагают использовать std::byte
.m
ПК