为什么内联函数不能看到内部范围?

tem*_*boy 3 c++

我知道内联函数是将其主体插入到调用它们的位置的函数.那么为什么调用它们时不会受范围更改影响的内联函数:

#include <iostream>

inline void alert(const std::string &str) { cout << str; }

int main() {
    using namespace std;

    alert("Hello World"); // cout << "Hello World";
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为我得到错误cout was not declared in this scope,但如果我这样std::cout做.如果内联函数的函数体插入到作用域中,为什么C++不知道它cout是否是成员std

Xya*_*and 6

您描述的行为是一个宏.内联函数是一个常规函数,编译器是否可以内联它.它的行为与范围规则相关的任何其他函数完全相同.