【问题标题】:Is this a bug in g++ c++14 support?这是 g++ c++14 支持中的错误吗?
【发布时间】:2016-06-22 22:40:41
【问题描述】:

似乎使用auto 参数g++ 只使用它遇到的第一个auto。这是一个错误吗?

auto f(std::vector<auto> a)
{
    a.push_back('0');
    return std::string("");
}

http://ideone.com/T69ytm

【问题讨论】:

  • 是的,这是一个 gcc 错误。它不应该接受std::vector&lt;auto&gt;
  • 这不是标准的 C++14。概念支持是 GCC 扩展。
  • auto 参数允许在 lambdas 中使用,而不是在常规函数中。 std::vector&lt;auto&gt; 也不是 lambdas 中允许的形式。
  • ideone.com 抑制了很多错误信息,我建议改用 gcc.godbolt.org。使用-std=c++14 -pedantic,gcc 4.9.2 为我提供了auto f(std::vector&lt;auto&gt; a) 行的诊断消息,所以我不会说这是一个错误。

标签: c++ g++ c++14


【解决方案1】:

正如@SergeyA 所说,这是一个 GCC 错误。 std::vector&lt;auto&gt; 不应该被接受。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多