Visual Studio 2022 17.5 及更高版本支持导入 C++23 标准库命名模块std,方法是将 的所有实例替换#include <header>为import std;where<header>是标准库头。
根据教程,有一些限制,例如:
不要混合和匹配导入 C++ 标准库头文件和命名模块。例如,不要 #include <vector> 和 import std; 在同一个文件中。
这是否意味着如果我import std;在文件中使用(通过“文件”我假设本教程指的是.cpp文件或其他翻译单元),那么它所包含的任何非标准库头都#include不允许传递到#include标准库标题?
我很确定答案显然是肯定的,因为在预处理之后,是否存在并不重要#include- 它的内容最终将.cpp与语句混合在文件中import。
但是,除了彻底搜索所有传递性之外,还可以采取什么措施来防止混合呢?#include但是,除了彻底搜索所有传递性以查看是否存在任何标准库头之外,import std;特别是如果一个项目依赖于 Boost 之类的东西,那么在 Boost 本身作为模块提供之前,这似乎不是一个现实的选择,对吗?
那么与此同时,我的说法对吗?import std; is basically only realistic for new or small projects where the standard library header dependencies (both direct and transitive) …