Я пытаюсь понять, почему кто-то напишет функцию, которая принимает ссылку const rvalue.
В приведенном ниже примере кода, какая цель - опорная функция const rvalue (возврат "3" ). И почему предпочтение разрешение перегрузки сопзЬ Rvalue выше Const-значение опорной функции (возвращение "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;
}