我想通过引用传递一个struct,因此它不会被复制,但Resharper会在下面给出警告:
struct sometype {
};
sometype foo() {
sometype x;
return x;
}
void bar() {
sometype & a = foo();//Binding r-value to l-value reference is non-standard Microsoft C++ extension
sometype && b = foo(); //ok
}
Run Code Online (Sandbox Code Playgroud)
问题:
怎么了sometype & a = foo();?是不是foo()左值的返回值,a也是左值?
是sometype && b = foo();实际上右值引用?它是否"窃取"返回值foo()并将结果发送b给析构函数?
还有另一种方法没有这个警告吗?