我一直在研究 C++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
。
标准中说明了这背后的原因吗?
最佳答案
那是因为在确定如何处理其参数之前,它必须先确定调用构造函数的类。。如果您将构造函数设为模板,它将像任何其他模板函数一样工作 - 自动推导参数。
关于c++ - 为什么 auto 不能用作模板类型参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6851026/