class A
{
public:
A(){}
private:
int i;
};
A a[8];
The C++11 standard 8.5.1.1 says:
"An aggregate is an array or a class (Clause 9) with no user-provided constructors (12.1), no brace-or-equalinitializers for non-static data members (9.2), no private or protected non-static data members (Clause 11), no base classes (Clause 10), and no virtual functions (10.3)."
As a is an array, is a an aggregate? I think not, but the standard says yes.