rvalue中的对象是否引用了对象,是否引用了rvalue?
struct A{
};
struct B{
A a2;
};
//template<class B>
void test(B &&b){
// 1. Is this the correct way?
auto &&in3 = std::forward<B>(b).a2;
std::cout << std::is_rvalue_reference<decltype(in3)>::value;
// return true
// 2. or this?
auto &&in4 = b.a2;
std::cout << std::is_rvalue_reference<decltype(in4)>::value;
// return false
}
test(B());
答案 0 :(得分:7)
是的,右撇子的成员本身就是左撇子。这由DR 421
澄清但这与此无关:
auto&amp;&amp; in4 = b.a2;
b
不是左值,它是左值(简单的经验法则:它有一个名称)。
要恢复传递给forward