gpt4 book ai didi

c++ - 参数相关名称查找和 typedef

转载 作者:可可西里 更新时间:2023-11-01 15:38:35 25 4
gpt4 key购买 nike

我没想到这段代码可以编译,但它确实编译了。我的理解是 func(d) 它在全局命名空间中查找名为“func”的函数,但也在任何传入参数的命名空间中查找(依赖于参数的查找)

但在这种情况下,参数位于全局命名空间中。那么为什么它会在 ns 命名空间中找到“func”呢?是否有特殊规则规定,如果参数类型是 typedef,则它使用基础类型的命名空间而不是实际参数的命名空间?

这似乎是真的,但我找不到任何支持这一点的东西……这是预期的行为吗?

namespace ns
{
struct data {};
void func(ns::data item) {}
};

// Create an alias "datatype" in the global namespace for ns::data
typedef ns::data datatype;


int main()
{
datatype d;
func(d);
}

最佳答案

参数dmain 的本地参数。 datatype 只是类型 ns::data 的别名,因此 d 的类型为 ns::data

ns::datans 命名空间的 [直接] 成员,因此 ns 命名空间中的此函数将被考虑用于 ADL .

关于c++ - 参数相关名称查找和 typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13192947/

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