gpt4 book ai didi

c++ - 使用命名空间标准然后包括 boost ?

转载 作者:行者123 更新时间:2023-11-27 23:18:21 27 4
gpt4 key购买 nike

考虑以下 C++11 程序:

 #include <stdhdr1>
#include <stdhdr2>
#include <stdhdr3>

using namespace std;

#include <boost1>
#include <boost2>
#include <boost3>

int main()
{
}

其中stdhdrn是标准库头文件,boostn是boost头文件。

是否存在无法编译的情况?

此外,在 main 中给出了一些额外的用户代码,是否存在因打开 std 命名空间而导致的歧义(或其他错误)无法通过显式限定歧义(或错误)实体来解决?

(例如因为 ADL 考虑了开放的 std 命名空间还是其他原因?)

(换句话说,是否可以在 open std 命名空间之后包含 boost handle?)

最佳答案

我认为不会有问题,因为 std 不包含名为 boost 的命名空间,所以仍然不会有任何名称冲突。

至于 ADL:ADL 只考虑类类型的封闭命名空间。 ADL 为 boost 类类型找到的任何函数都必须位于 boost 命名空间内。

您只需为标准库实体执行 ::std_entity 并为 boost 实体执行 boost::boost_entity 即可解析所有实体。

但是,如果不明确尝试,我想不出一个好的方法来证明这一点。当>

关于c++ - 使用命名空间标准然后包括 boost ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15010549/

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