An object of a struct/class (that has no **constructor**) can be created using an **initializer list**. Why is this not allowed on struct/class with **constructor**?

```
struct r { int a; };
struct s { int a; s() : a(0) {} };
r = { 1 }; // works
s = { 1 }; // does not work

```