Ale*_*k86 2 c++ module function-declaration c++20
我希望向那些尝试过C++ 20模块的人提出一个小问题
根据TS,这个代码应该在C++ 20中编译吗?
void f1() { f2(); }
void f2() { ... }
Run Code Online (Sandbox Code Playgroud)
例如,在C++ 11中它不会编译,因为f1()不"知道"f2(),必须在使用前声明f2().
但也许在C++ 20中,这个要求将在模块中消除?
如果没有编译第一个代码片段,那么这个代码片段是否会编译
void f1() { f2(); }
export void f2() { ... }
Run Code Online (Sandbox Code Playgroud)
因为从BMI可以看到f2()?
模块还没有在C++ 20中.他们可能会在那里结束,但他们还没有.
这就是说,虽然模块确实改变了很多关于名称查找的东西(我知道最新的论文是P1103R1),但模块不会改变C++的基本属性,这些属性必须在使用之前声明(模仿依赖的非限定调用之类的函数 -只是延迟查找,但它仍然必须实际发生).
这个:
Run Code Online (Sandbox Code Playgroud)void f1() { f2(); } export void f2() { ... }
如果没有先前声明f2或从某处未导入,则仍将是编译错误.你必须写:
export void f2() { ... }
void f1() { f2(); }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
217 次 |
| 最近记录: |