![]() |
1
5
立即修复执行以下操作:
来解决你的问题。
如果
你的解决方案出了什么问题
这是怎么回事
向类型添加运算符时,始终在类型的命名空间中定义运算符。
可以重新打开命名空间。因此,如果无法控制头文件,可以使用
长版
首先,它在本地(在本地命名空间中)查找。如果在那里找到什么,搜索就会停止。(这包括
如果找不到匹配项,它将开始查找封闭命名空间,直到找到函数/运算符或到达根命名空间为止。如果有的话
接下来,ADL(参数相关查找)完成。将检查所有函数/运算符参数的关联命名空间。此外,还将(递归地)检查模板的所有类型参数的关联命名空间。 将收集与名称匹配的运算符/函数。对于ADL,不检查父命名空间。 这两个运算符/函数集合是重载解析的候选对象。
接下来,我们检查参数的名称空间--
现在,当您移动用户定义的
超负荷解决(它对候选人做什么)是它自己复杂的主题。简而言之,它试图找到包含最少转换量的重载;如果两种情况完全匹配,则它更倾向于使用非模板而不是模板,使用非variardic而不是variardic。
“最小转换量”和“完全”中有很多细节可能误导程序员。最常见的是转换
|
![]() |
2
0
|
![]() |
zayd · 在C中Boost程序选项创建的矢量上迭代++ 1 年前 |
![]() |
Mimi · CMake使用了错误的boost include目录 1 年前 |
![]() |
zxctatar · 如何在一个类中运行两个异步定时器 1 年前 |
![]() |
Adrian · 如何确定boost::可选的(和其他)API? 1 年前 |
![]() |
TooTone · boost-pfr是如何获取结构的字段名称的? 1 年前 |