: 
complex v[6] = { 1, complex(1,2), complex(), 2 };Here,
complex::complex(double)
is called for the initialization of
v[0]
and
v[3],
complex::complex(double, double)
is called for the initialization of
v[1],
complex::complex()
is called for the initialization
v[2],
v[4],
and
v[5].  For another example,
struct X {
  int i;
  float f;
  complex c;
} x = { 99, 88.8, 77.7 };Here,
x.i
is initialized with 99,
x.f
is initialized with 88.8, and
complex::complex(double)
is called for the initialization of
x.c. —
 end example