When should BOOL and bool be used in C++ and why?
I think using bool is cleaner and more portable because it's a built-in type. But BOOL is unavoidable when you interactive with legacy code/C code, or doing inter-op from .NET with C code/Windows API.
So my policy is: Use bool inside C++. Use BOOL when talk to outer world, e.g., export function in windows DLL.
Is there a definitive explanation of when to use one over the other?