问题描述: 在使用ADL(Argument Dependent Lookup)时,编译器报错说未找到隐藏的友元模板函数。
解决方法:
使用using声明解决:
// 声明隐藏的友元模板函数
template
void func(T);
// 声明一个using声明,将模板函数引入当前作用域
using ::func;
// 使用ADL调用
func(some_arg);
显式使用作用域解析运算符解决:
// 声明隐藏的友元模板函数
template
void func(T);
// 使用作用域解析运算符调用
::func(some_arg);
将模板函数声明为非模板函数解决:
// 非模板函数声明
void func(int);
// 使用ADL调用
func(some_arg);
将模板函数声明在命名空间中解决:
// 声明命名空间
namespace ns {
// 声明隐藏的友元模板函数
template
void func(T);
}
// 使用ADL调用
ns::func(some_arg);
这些解决方法可以帮助解决ADL未找到隐藏的友元模板函数的问题。具体使用哪种方法取决于代码的具体情况,可以根据实际情况选择合适的解决方法。
上一篇:ADLS中的分区文件数量与作为DataFrame读取后的分区数是否相同?
下一篇:ADL与std :: function:能否通过std :: function对象的参数列表中的类型找到接受std :: function对象的函数?