I think it should be 1. Because 1 byte is enough to hold this BOOL. And if I comment "BOOL b:1", it becomes a empty struct, and its size is 1 now.
#include <iostream>
#include <string>
using namespace std;
enum BOOL { FALSE=0, TRUE=1 };
struct A {
BOOL b:1;
};
int main()
{
std::cout << sizeof(A) << std::endl; //output 4.
}