gpt4 book ai didi

c++ - 顶级命名空间中类的参数依赖查找?

转载 作者:行者123 更新时间:2023-11-30 02:46:24 24 4
gpt4 key购买 nike

由于历史原因,我有一个位于顶级命名空间中的类。我需要为其定义一个函数,该函数必须使用依赖于参数的查找找到1。顶级命名空间是否被视为此类的关联命名空间,还是我必须采取一些解决方法?

1否则使用它的模板可能找不到它,因为模板后定义的符号只有在 ADL 找到时才能看到。

最佳答案

全局命名空间在这方面并不特殊,它的工作方式与任何其他命名空间一样,因此非常适合您的用例。

Live example 1全局命名空间的工作。

Live example 2 ADL 实际上是 #1 起作用的原因1

这是实例的文本:

#include <iostream>

struct X {};

template <class T>
void bar(T t)
{
foo(t);
}

void foo(X x)
{
std::cout << "Foo\n";
}

int main()
{
X x;
bar(x);
}

1 这会失败,因为 ADL 找不到该函数,而正常查找会。因此,它证明 #1 确实有效,这要归功于 ADL。

关于c++ - 顶级命名空间中类的参数依赖查找?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23603576/

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