Если C ++ позволяет Bool использовать какой -либо бит, что мешает C ++ оптимизировать std :: Необязательно для использования 1 байт и используйте два бита для представления has_value и value () ? Конечно, мы бы использовали маску, но в современных процессорах это не повредит перф.
Подробнее здесь: https://stackoverflow.com/questions/612 ... -two-bytes