相关疑难解决方法(0)

了解警告:将r值绑定到l值引用

我想通过引用传递一个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给析构函数?

还有另一种方法没有这个警告吗?

c++ syntax resharper rvalue c++11

8
推荐指数
2
解决办法
4742
查看次数

标签 统计

c++ ×1

c++11 ×1

resharper ×1

rvalue ×1

syntax ×1