类似于如何删除类似的 const 和非 const 成员函数之间的代码重复?,我想删除几乎相同的成员函数之间的代码重复,除了 ref 限定符。
假设我有一个类似这样的课程:
class MyStringBuilder
{
std::string member;
public:
// Other functions
std::string create() const& {
// Some work
std::string result = member;
// More work
return result;
}
std::string create() && {
// Some work
std::string result = std::move(member);
// More work
return result;
}
};
我们想要为构建器对象执行此操作并非不可想象,因为如果我们完成了MyStringBuilder
.
除了使用成员的地方,const&
版本和&&
版本之间的代码是相同的。这两个函数之间的唯一区别是&&
版本std::move
是任何成员,只要它们被引用。
如何避免这种代码重复?