【发布时间】:2016-06-22 22:40:41
【问题描述】:
似乎使用auto 参数g++ 只使用它遇到的第一个auto。这是一个错误吗?
auto f(std::vector<auto> a)
{
a.push_back('0');
return std::string("");
}
【问题讨论】:
-
是的,这是一个 gcc 错误。它不应该接受
std::vector<auto>。 -
这不是标准的 C++14。概念支持是 GCC 扩展。
-
auto参数允许在 lambdas 中使用,而不是在常规函数中。std::vector<auto>也不是 lambdas 中允许的形式。 -
ideone.com 抑制了很多错误信息,我建议改用 gcc.godbolt.org。使用
-std=c++14 -pedantic,gcc 4.9.2 为我提供了auto f(std::vector<auto> a)行的诊断消息,所以我不会说这是一个错误。