什么是“rvalue引用*这个”?在clang‘s中遇到了一个叫做“rvalue Reference for*this”的建议C+11状态页.我读了很多关于参考文献的文章,并且理解了它们,但我想我不知道这一点。我也找不到太多的资源在网络上使用这些条款。页面上有一个指向提案文件的链接:N 2439(将Move语义扩展到*this),但我也没有从其中获得多少示例。这个特性是关于什么的?
3 回答
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
const
struct S { S& operator ++(); S* operator &(); };S() = S(); // rvalue as a left-hand-side of assignment!S& foo = ++S(); // oops, dangling reference&S(); // taking address of rvalue...
struct S { S& operator ++() &; S* operator &() &; const S& operator =(const S&) &;};
偶然的你
TA贡献1841条经验 获得超3个赞
const
:
void SomeFunc() const;void SomeFunc();
const
const
const
this
const
void RValueFunc() &&;
Object
:
Object foo;foo.RValueFunc(); //error: no `RValueFunc` version exists that takes `this` as l-value.Object().RValueFunc(); //calls the non-const, && version.
this
void SomeFunc();void SomeFunc() &&;
void SomeFunc() &;void SomeFunc() &&;
*this
&&
class X { std::vector<char> data_;public: // ... std::vector<char> const & data() const & { return data_; } std::vector<char> && data() && { return data_; }};X f();// ...X x;std::vector<char> a = x.data(); // copystd::vector<char> b = f().data(); // move
- 3 回答
- 0 关注
- 678 浏览
添加回答
举报
0/150
提交
取消