我试图理解为什么有人会编写一个接受const rvalue引用的函数。
在下面的代码示例中,const rvalue引用函数(返回“3”)有什么用途。 并且为什么重载决议喜欢const Rvalue而不是const LValue引用函数(返回“2”)。
#include <string>
#include <vector>
#include <iostream>
std::vector<std::string> createVector() { return std::vector<std::string>(); }
//takes movable rvalue
void func(std::vector<std::string> &&p) { std::cout << "1"; }
//takes const lvalue
void func(const std::vector<std::string> &p) { std::cout << "2"; }
//takes const rvalue???
//what is the point of const rvalue? if const I assume it is not movable?
void func(const std::vector<std::string> &&p) { std::cout << "3"; }
int main()
{
func(createVector());
return 0;
}