Был похожий вопрос здесь, но пользователь в этом вопросе, похоже, имел гораздо больший массив или вектор. Если у меня есть:
bool boolArray[4];
И я хочу проверить, являются ли все элементы ложными, я могу проверить [0], [1], [2] и [3] по отдельности, или я могу пройти через это. Поскольку (насколько я знаю) значение false должно иметь значение 0, а все, кроме 0, - true, я подумал о простом выполнении:
if ( *(int*) boolArray) { }
Это работает, но я понимаю, что оно полагается на то, что значение bool составляет один байт, а int - четыре байта. Если я приведу к (std::uint32_t), все будет в порядке, или это все-таки плохая идея? Просто у меня в массиве 3 или 4 bools, и мне было интересно, если это безопасно, а если нет, то есть ли лучший способ сделать это.
Кроме того, в случае, если у меня более 4 бул, но менее 8, могу ли я сделать то же самое с std::uint64_t или без знака long или что-то еще?