我想了解爲什麼有人會寫一個函數,需要一個常量右值引用。C++ 0x const RValue引用作爲函數參數
在下面的代碼示例中const rvalue引用函數的用途是什麼(返回「3」)。 爲什麼重載分辨率優先於常量LValue引用函數(返回「2」)之上的const Rvalue。
#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;
}
你使用什麼編譯器? – 2011-06-10 14:11:41
VC++ 10。但在gcc上應該是一樣的。 VC++ 10具有符合標準的移動語義和重載解析。 – 2011-06-10 14:16:28
dupe of http://stackoverflow.com/questions/4938875/do-rvalue-references-to-const-have-any-use – 2011-06-10 14:43:45