【发布时间】:2017-09-07 18:40:13
【问题描述】:
我对以下代码感到困惑:
#include <iostream>
using namespace std;
int *foo()
{
//Operation
}
int main ()
{
auto int ret = foo();
}
我在GCC下编译了上面的代码,但是我得到了以下错误:
error: two or more data types in declaration of 'ret'
auto int ret = foo();
但是,如果我删除 int 类型,像这样:
auto ret = foo();
然后运行成功。
auto 是存储类,int 是数据类型,那么为什么会出现“两种或多种数据类型”错误在第一种情况下?
【问题讨论】:
-
你是过去的时间旅行者吗?
-
我没有粗鲁,但我从未见过有人在野外使用
auto作为存储类说明符。我认为这就是为什么人们接受它可以被重新利用的原因。不管怎样,现在(C++11 上)这意味着automatically 推断类型,这太棒了。 -
是的,他们同意更改它,因为他们从未在编译器一致性测试套件之外找到单一用途的证据。
-
投票为题外话的人是错误的。这是一个合法的问题,但重复
标签: c++ c++11 c++14 auto storage-class-specifier