struct some_struct{
int a;
};
some_struct n = {};
n.a will be 0 after this;
I know this braces form of initialization is inherited from C and is supported for compatibility with C programs, but this only compiles with C++, not with the C compiler. I’m using Visual C++ 2005.
In C this type of initialization
struct some_struct n = {0};
is correct and will zero-initialize all members of a structure.
Is the empty pair of braces form of initialization standard? I first saw this form of initialization in a WinAPI tutorial from msdn.
The empty braces form of initialization is standard in C++ (it’s permitted explicitly by the grammar). See C Static Array Initialization – how verbose do I need to be? for more details if you’re interested.
I assume that it was added to C++ because it might not be appropriate for a 0 value to be used for a default init value in all situations.