是“auto int i”吗?有效的 C++11?

发布于 2024-09-02 10:38:07 字数 678 浏览 3 评论 0原文

在回答这个问题时,出现了传统的 >C 关键字 auto 的含义(自动,而不是 staticextern 存储)在 C 中仍然有效++11 现在它意味着类型推导。

我记得 auto 的旧含义应该保留在相关的地方,但其他人不同意。

auto char c = 42; // either compilation error or c = '*'

查看编译器,我看到了当前的划分。

  1. 不再允许使用 auto 的旧含义
  • VS10
  • g++
  1. 在相关的地方使用 auto 的旧含义

你会吗知道哪个是正确的行为?

In answering this question the question arose as to whether the traditional C meaning of the keyword auto (automatic, rather than static or extern storage) is still valid in C++11 now that it means type deduction.

I remember that the old meaning of auto should remain where relevant but others disagreed.

auto char c = 42; // either compilation error or c = '*'

Looking at compilers I see the current division.

  1. Old meaning of auto is no longer allowed
  • VS10
  • g++
  1. Old meaning of auto is used where relevant

Do you know which is the correct behaviour?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不…忘初心 2024-09-09 10:38:07

不,事实并非如此。事实上,§7.1.6。 4/3 给出了以下示例:

auto x = 5; // OK: x has type int
const auto *v = &x, u = 6; // OK: v has type const int*, u has type const int
static auto y = 0.0; // OK: y has type double
auto int r; // error: auto is not a storage-class-specifier

如您所见,它会导致错误。 §7.1.6。 5 几乎达成协议:

在本节未明确允许的上下文中使用 auto 的程序是格式错误的。

No, it is not. In fact, §7.1.6.​4/3 gives the following example:

auto x = 5; // OK: x has type int
const auto *v = &x, u = 6; // OK: v has type const int*, u has type const int
static auto y = 0.0; // OK: y has type double
auto int r; // error: auto is not a storage-class-specifier

As you can see, it results in an error. §7.1.6.​5 pretty much seals the deal with:

A program that uses auto in a context not explicitly allowed in this section is ill-formed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文