```
int i = 0;

```

is equivalent to

```
int i;
i = 0;

```

Then, 

```
auto i = 0;

```

It's OK, working fine. But, 

```
auto i;
i = 0;

```

compiler gives an error.

So, Why compiler gives an error?