返回右值参数作为右值引用

时间:2018-11-27 22:59:22

标签: c++ c++11 parameters reference rvalue

在该线程(Should I return an rvalue reference parameter by rvalue reference?)上写着const data = [{ id: 1, colour: 'blue', count: 10 }, { id: 1, colour: 'red', count: 12 }, { id: 2, colour: 'red', count: 8 }, { id: 2, colour: 'blue', count: 3 } ] const result = data.reduce((r,{id, colour, count}) => { r[id] = ({ id, colour_count: Object.assign(r[id] ? r[id].colour_count : {}, {[colour]: 0}) }) r[id].colour_count[colour] += count return r }, {}) console.log(Object.values(result))。 如果我对这句话理解得很好,则此代码应该不正确

The parameter cannot be a temporary (which is just what rvalue references represent)

但是,当我们查看#include <string> #include <iostream> std::string &&f(std::string &&a) { return std::move(a); } int main() { std::string a = f("lol"); std::cout << a << std::endl; return 0; } 时,似乎它返回了临时元组的右值引用,而我实际上认为将std::get与临时元组一起使用没有问题。

因此,我想我误解了上面的句子,并且先前的代码是正确的。但是,这是不正确的:

std::get

如果函数返回一个值而不是右值引用,那将是正确的。我说得对吗?

0 个答案:

没有答案