gpt4 book ai didi

c++ - 没有模板的 ADL

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:29 25 4
gpt4 key购买 nike

可以给我一个不使用模板的 ADL 示例吗?从来没有见过这样的东西。我的意思是像 here .具体来说,我对导致上述一些陷阱的示例感兴趣。

编辑:

我认为 Tomalak 的回答可以延伸到陷阱。考虑一下:

namespace dupa {

class A {
};

class B : public A {
public:
int c;
B() {
}
};

void f(B b) {
printf("f from dupa called\n");
}
}

void f(dupa::A) {
printf("f from unnamed namespace called\n");
}


int main()
{
dupa::B b;
f(b);

return 0;
}

这里我们期望来自未命名命名空间的 f 将被调用,但取而代之的是调用另一个。

最佳答案

我无法向您展示导致陷阱的东西,但我可以展示ADL working without templates :

namespace foo {
struct T {} lol;
void f(T) {}
}

int main() {
f(foo::lol);
}

注意lol的类型必须是class-type;如您所见,我最初尝试使用内置的,但没有成功。

关于c++ - 没有模板的 ADL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6685515/

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