I've been playing around with C++0x's `auto` keyword and tried the following.

```
std::unique_ptr<auto> ptr(new int(0));

```

I tried compiling it with g++ 4.4.5 and got

```
error: invalid use of auto

```

Judging by eye, `auto` can easily be inferred to `int`.

My guess is the type inference and the template engine don't talk to each other. Otherwise, the template engine would know to instantiate the template class with `int` as the type parameter.

Another guess is from the standard, I see this.

```
A member shall not be declared with auto, extern or register storage class.

```

But I thought that was the `auto` as in local variables, not as in `auto` used to deduce types.

And my last guess is that the compiler thinks this is an `auto` storage class, not `auto` for type deduction.

Is there a reason behind this stated in the standard?