Why can't auto be used as a template type parameter?

Viewed 3793

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?

4 Answers
Related