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