gpt4 book ai didi

c++ - 从 C++ 模块使用全局命名空间

转载 作者:行者123 更新时间:2023-12-02 15:50:24 25 4
gpt4 key购买 nike

我正在尝试向包含该 C++ 模块的任何内容公开 C++ 命名空间。通常在头文件中,我只需编写 using namespace x::y::z; 就可以了。我无法让它在模块中运行。

我正在使用 visual studio 2022 和 MSVC v143,最新的 c++。

最佳答案

在当前标准草案 § 10.2 [module.interface] 中,我们看到:

export using namespace N;        // error: does not declare a name

在同一节中,还有非命名空间using声明的正确导出

export using T = S;              // OK, exports name T denoting type S

我相信命名空间别名也应该有效

export namespace N = M;

不同之处在于 using namespace 指令为非限定查找提供了一个隧道,以在其自然范围之外进行搜索,但不声明任何新名称。 using 声明和命名空间别名都确实声明了新名称,并且这些名称应该是可导出的。

具体来说,以下任何一个都应该有效:

export using float3 = linalg::aliases::float3; // for each type
export namespace la = linalg::aliases; // or just provide a short name

关于c++ - 从 C++ 模块使用全局命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72727684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com