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())));
这读起来有点烦人,也没有实现我用委托“拼写出来”的目标。