Value initialisation

Ref: https://timsong-cpp.github.io/cppwp/n4950/dcl.init#general-9

Value-initialisation of an object of a class means to construct it using default constructor. If no default constructor is provided, it is zero initialised. For an array type, each element is value initialized. Otherwise, for types other than class/array, the object is zero initialized.

Aggregates

Ref: https://timsong-cpp.github.io/cppwp/n4950/dcl.init.aggr#1

An aggregate is either an array or a class with the following properties:

  • No user defined constructor or inherited
  • No private or protected direct non-static data members as well as base classes
  • No virtual functions and no virtual base classes