c++ - 使用右值引用选择函数重载
问题描述
这显然与对象、右值引用、常量引用之间的重载解析不同。请不要关闭这个问题。在上一个问题中,int
正在传递 an,而这里int &&
正在传递 an。
我以为我理解了右值引用,但显然在函数重载方面我遗漏了一些东西。给定代码:
#include <iostream>
#include <utility>
void afunc(int)
{
std::cout << "\nafunc(int)\n";
}
void afunc(int &&)
{
std::cout << "\nafunc(int &&)\n";
}
int main()
{
int i = 0;
afunc(std::move(i));
}
我会假设afunc
将选择第二次调用,但我得到的错误是调用afunc
不明确。因为std::move(i)
,据我了解,创建了对i
, an 的右值引用,int
所以我不明白为什么第二次调用afunc
不完全匹配。有人可以解释一下我所理解的错误吗?
解决方案
推荐阅读
- matrix - Python SymPy 从矩阵元素中获取方程
- flutter - Flutter 小部件上的印象或跟踪
- android-ndk - ndk-build 找不到库
- javascript - 为什么这个函数根据codewars返回“'\'1\''”?
- selenium-ide - 推入阵列 Selenium IDE 2019
- python-3.x - 如何将我的 Python 历史记录限制在虚拟环境中?
- codenameone - 在代号一中滑动标签
- google-chrome-extension - XMLHttpRequest 在内容脚本中工作正常但在后台脚本中不能正常工作 - Chrome 扩展
- machine-learning - 我将如何从先前输入的输出中重新训练我的监督学习模型?
- c# - 如何解析 Web API JSON 响应?