首页 > 解决方案 > 使用右值引用选择函数重载

问题描述

这显然与对象、右值引用、常量引用之间的重载解析不同。请不要关闭这个问题。在上一个问题中,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不完全匹配。有人可以解释一下我所理解的错误吗?

标签: c++overloadingmovervalue-reference

解决方案


推荐阅读