错误假设在GCC上从过载函数中键入XXX
error assuming cast to type xxx from overloaded function on gcc
我在clang
上没有发生的GCC上遇到了一个错误template<typename T>
int invoke_func(T a) {
return a;
}
bool test(int(*ptr)(int))
{
return ptr == invoke_func<int>;
}
Godbolt
错误:
<source>: In function 'bool test(int (*)(int))':
<source>:9:19: error: assuming cast to type 'int (*)(int)' from overloaded function [-fpermissive]
return ptr == invoke_func<int>;
^~~~~~~~~~~~~~~~
GCC拒绝此代码是正确的吗?
在进一步测试替换invoke_func<int>
之后,&invoke_func<int>
在GCC和Clang上工作。
但是,当不在 int(*ptr)(int) = invoke_func<int>;
之类的表达式中时,为什么需要&
?
Godbolt
不涉及过载分辨率,因此消息至少是GCC错误。似乎有一个错误报告:https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81059
编辑:在搜索标准规则时,我偶然发现了重复的现有答案,这解释了角案例:为什么如果没有显式&amp&amp;在功能名称上?
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- pybind11:属性错误:尝试从 py 文件运行函数时,模块'XXX'没有属性'YYY'
- 错误假设在GCC上从过载函数中键入XXX
- 带有向量的unique_ptr:错误:xxx的隐式删除复制构造函数
- 如何使用 SDL2 的计时器函数每 xxx 毫秒将变量增加 1
- 使用MS Test的函数TestMockedTRHUStart(void)中引用的未解析外部符号xxx
- 为什么<cmath>函数不需要"using std::xxx"?
- 哈希表单独链接中没有用于调用xxx的匹配函数
- 链接错误:对“XXX的虚函数表”的未定义引用