使用基本和用户定义类型的名称查找麻烦
name lookup troubles with fundamental and user defined types
此编译:
struct type{};
template<typename T>
void foo(T in) { bar(in, type()); }
void bar(int, const type&) {}
int main() { foo(42); }
这不是(正如我从今天开始的上一个问题中学到的那样):
template<typename T>
void foo(T in) { bar(in); }
void bar(int) {}
int main() { foo(42); }
是第一个摘要也用ADL解释的原因吗?如果是这样,如何?
模板参数是一种基本类型,ADL不应该适用...为什么使用type
类型会有所不同?
,尽管在您的具体专业化中, in
是基本类型,但 bar
仍然是一个依赖的名称,因此其查找的参数依赖部分是在实例化上下文中执行的。使其依赖的论点没有相关名称空间的事实是无关紧要的。所有非依赖性参数仍然有助于相关的名称空间和类。
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 在C++中查找文件
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- 查找奇数平方和时遇到麻烦
- 找麻木的麻烦
- 查找窗口找不到进程
- 字符串查找方法找不到第一字母
- 使用基本和用户定义类型的名称查找麻烦
- 在 Linux 上为 OpenGL 4.2 设置开发环境(查找 gl.h 时遇到麻烦)
- cmake 找不到提升库,因为它查找了错误的文件名
- Linux 查找 glxext.h 函数的对象 -> 找不到正确的 .so -> "undefined reference"
- 如果我想查找某些内容,但不希望它在找不到时最后返回,我应该使用哪种 STL 算法?
- 编译C++mac,查找找不到的头文件
- 什么时候在构造函数的类定义中通过普通查找找不到 mem-initializer-id?
- 找不到标识符,即使使用依赖于参数的查找和运算符<<也不明确
- C++ 映射查找找不到特定键
- 实现 Brovuka 算法以查找 MST 时遇到麻烦
- 设置::查找() 找不到