gpt4 book ai didi

c++ - 右值委托(delegate),或 const 成员函数的右值等价物

转载 作者:行者123 更新时间:2023-11-30 04:26:15 25 4
gpt4 key购买 nike

struct that
{
that &frob()
{
return *this;
}
that frob() const
{
return that(*this);
}

//that &&frob() && //<-called only if *this is an rvalue
//{
// return move(*this);
//}

that()
{
// make things
}
that(const that &other)
{
// copy things
}
that(that &&other)
{
// move things
}
};

显然上面注释中的函数不是合法的 C++,但我需要知道是否有办法实现:

that().frob().frob().frob();

等等,而每次调用 frob() 都会有效地调用其“移动”版本。因为这是可以在编译时确定的东西,所以我想不出有什么理由让它不以某种形式存在。

我可以这样写:

that &&frob(that &&t)
{
return t;
}

这会导致:

frob(frob(frob(that())));

这读起来有点烦人,并且没有实现我通过授权“把事情说清楚”的目标。

最佳答案

如果你想让被&&注解的函数和其他函数一起玩得很好,你应该在其他函数上使用&注解。

that &frob() &
{
return *this;
}
that frob() const &
{
return that(*this);
}

关于c++ - 右值委托(delegate),或 const 成员函数的右值等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11668726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com