在 C++ 标准中的什么地方可以找到对在全局范围内调用函数的支持?

Where in the C++ Standard can I find support for invoking a function in global scope?

考虑以下代码段:

#include <iostream>
int f(int i) {
    return ++i;
}
int i = f(i);

int main() {
    std::cout << i << '\n';
}

我可以在 C++ 标准的哪个位置找到对上述全局变量 i 初始化的支持?

non-local 变量的初始化在标题为 "Initialization of non-local variables"、[basic.start.init] 的章节中进行了描述。在 C++11 中,这是 3.6.2.

使用 = 进行初始化,初始化器可以是花括号列表或任何赋值表达式,包括函数调用,如 [dcl.init] (C++11 8.5) 中所指定。

这具有静态存储持续时间,因此它是第一个 zero-initialised 在静态初始化期间根据 3.6.2/2:

Variables with static storage duration [...] shall be zero-initialized before any other initialization takes place.

然后在动态初始化期间从其初始化器初始化它,因为它不符合常量初始化的条件(因为初始化器不是常量表达式)。将静态初始化的零值传递给函数,函数将其递增 returns 1。该值 1 用于完成初始化。