Я играл с ключевым словом С++ 0x auto
и пробовал следующее.
std::unique_ptr<auto> ptr(new int(0));
Я попытался скомпилировать его с g++ 4.4.5 и получил
error: invalid use of auto
Судя по глазу, auto
можно легко вывести на int
.
Мое предположение - это вывод типа, и механизм шаблонов не разговаривает друг с другом. В противном случае механизм шаблона знал бы, чтобы создать экземпляр класса шаблона с int
в качестве параметра типа.
Еще одно предположение из стандарта, я вижу это.
A member shall not be declared with auto, extern or register storage class.
Но я думал, что это был auto
как в локальных переменных, а не как в auto
, используемый для вывода типов.
И последнее мое предположение заключается в том, что компилятор считает, что это класс хранения auto
, а не auto
для вывода типа.
Есть ли причина, по которой это указано в стандарте?