Зачем Страуструп добавил в Си с плюсами тип данных bool? А затем и в C99 определили _Bool. Всё ведь было предельно просто:
FALSE == 0
TRUE != 0
Зачем?! Дело ведь точно не в экономии памяти, и не в быстродействии. Единственное, что изменилось, так это то, что теперь есть новая сигнатура для функций и методов, но а толку от этого?
Для ясности - где логические, а где арифметические данные. Тем более, что есть тонкости: булевские значения в разных случаях кодируются то байтами, то отдельными битами.
Этот трюк нужен был в в 1972 году - для повышения производительности кода ценой снижения надёжности этого кода. Но чем больше кода, тем больше ошибок, вызванных подобными трюками. И в современном мире цена крайне слабой типизации С/C++ слишком высока. Так что bool - один из способов хоть как-то увеличить надёжность этих языков.
Добавление нового однобайтового типа точно не снизит расход памяти и быстродействие, сигнатуры функций и методов поддерживаются и старые наровне с новыми. Т. е. потерь никаких, а уровень языка стал выше.