c++ - 在 c++ 中, `expressions` 只允许在全局范围内用于初始化全局对象。我在哪里可以在标准中找到它?

标签 c++ language-lawyer

下面注释掉的 expression 无法编译,因为它在全局范围内。但是在 C++ 标准中我在哪里可以找到与此限制相关的内容?我记得,表达式 只允许在全局范围内用于初始化全局对象。我已经研究过第 5 章表达式,但无济于事。

#include <iostream>
//std::cout.setf(std::ios_base::hex, std::ios_base::basefield);


int main()
{
    std::cout.setf(std::ios_base::hex, std::ios_base::basefield);
} 

最佳答案

我相信这一切都归结为3.5 程序和链接:

1) A program consists of one or more translation units (Clause 2) linked together. A translation unit consists of a sequence of declarations.
translation-unit:
declaration-seq opt

按照该语法描述,您将找到声明序列 中允许的内容以及每个声明 中允许的内容。可以看出,翻译单元 级别不允许使用常规语句

关于c++ - 在 c++ 中, `expressions` 只允许在全局范围内用于初始化全局对象。我在哪里可以在标准中找到它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37460505/

相关文章:

C++模板问题

rust - Rust的确切自动引用规则是什么?

c++ - 无法从多维数组的初始值设定项推断边界

用于提供迭代器的集合的 C++ 类层次结构

c++ - new Object() 和 Object() 有什么区别

c++ - 将全局迭代器重置为列表

c++ - 为什么 cppreference 将 type_traits xxx_v 快捷方式定义为内联 constexpr 而不仅仅是 constexpr?

c++ - std::move 是否与左值引用一起使用? std::move 如何在标准容器上工作?

c++ - 在 Type 和 Wrapper<Type> 之间 reinterpret_cast 是否安全?

java - 在构造函数方法中返回子类